检查内存管理问题的方式有哪些?

 

检查内存管理问题的方式有哪些?

1)点击Xcode顶部菜单中的Product Analyze。这种方法主要可以查看内存泄露,变量未初始化,变量定义后没有被使用到

2)使用Instrument工具检查。点击Xcode顶部菜单中的Product Profile,弹出一个界面,选择左侧的Memory后,再选右侧的Leaks。

3)人工检查


runtime

简介:

1.通过 Objective-C 

 直接编写 Objective-C 代码 在程序运行期间会自动将代码转换成相应的结构体和函数。

 2.通过NSObject的方法 NSObject方法定义了许多方法用来直接调用Runtime里面的方法 

 isKindOfClass:;isMemberOfClass:

 respondsToSelector:

 conformsToProtocol:

 methodForSelector:

 3.直接操作runtime方法

 runtime系统是一个C语言静态库,它拥有许多函数和结构体数据 需要导入

Class:Class结构体主要存储类的实例变量和实例方法

OC编译之后 类是由Class表示 实际指向objc_class结构体

isa:指向metaClass(元类) 存储类的类方法和类变量

super_class:指向父类

methodLists:该类的方法列表

ivars:存储类的成员变量的信息

Method:是runtime内部定义的函数,用来代表一个方法

介绍:

SEL method_name:方法选择器的名字 用来区分方法的ID

获取SEL的方法

1、@selector()

2、NSSelectorFromString()

3、sel_registerName函数

char *method_types:类型 存储着方法的参数类型和返回值类型

IMP method_imp:指向此方法的具体实现 指向的方法在内存中的位置

Ivar:实例变量


使用

获取类名:class_getName

获取父类名:class_getSuperclass

获得实例变量的大小:class_getInstanceSize


获得方法名:method_getName

获得方法的实现:method_getImplementation

获得方法的参数 和返回值类型的字符串:method_getTypeEncoding

获得方法参数的个数:method_getNumberOfArguments

设置实现方法:method_setImplementation

交换两个方法:method_exchangeImplementations

发送消息:objc_msgSend

添加重写 一个方法:class_addMethod

替换方法:class_replaceMethod

获得实例方法:class_getInstanceMethod

获得所有实例方法:class_copyMethodList

获得方法的实现IMP:class_getMethodImplementation

查询是否响应某个方法:class_respondsToSelector


支付功能

支付宝

1.导入AlipaySDK.bundle AlipaySDK.framework 系统库SystemConfiguration.framework

2.导入头文件 #import  

3.info.plist注册scheme 

4.配置请求Order信息

《1》将商品信息拼接成字符串

《2》获取私钥并签名商户信息

《3》生成订单

5.设置回调方法

微信

1.开放平台申请帐号 并开通支付功能

2.导入SDK 添加依赖库

3.后台生成订单 开始支付

4.用户确认信息输入密码

5.支付完成 跳回app

银联

UPPayPlugin无卡交易

UPPayPluginPro无卡交易和VIPOS音频口支付

需要把.m改成.mm

1.添加SDK包 添加系统库

2.服务器准备交易流水号

3.startPay 开始支付

4.设置回调方法


环信

消息:EMMessage

消息内容

文本:EMTextMessageBody

图片:EMImageMessageBody

位置:EMLocationMessageBody

语音:EMVoiceMessageBody

视频:EMVideoMessageBody

文件:EMFileMessageBody

发送方式

单聊:EMChatTypeChat

群聊:EMChatTypeGroupChat

聊天室:EMChatTypeChatRoom

会话:chatManager

获取会话:getConversation 区分聊天方式单、群、聊天室

删除会话:deleteConversation、deleteMessages(删除会话中的消息)

获取会话列表:getAllConversations

获取会话未读消息数:[EMConversation unreadMessagesCount];

聊天:chatManager

发送消息:asyncSendMessage

接收消息:EMChatManagerChatDelegate 代理的回调

下载消息附件:asyncDownloadMessage

设置消息已读:asyncSendReadAckForMessage

好友管理:

获取好友列表:getContactsFromServerWithError

好友申请:contactManager

发送加好友申请:addContact

监听加好友请求:addDelegate

同意加好友申请:acceptInvitationForUsername

拒绝加好友申请:declineInvitationForUsername

删除好友:deleteContact

黑名单:contactManager

获取好友黑名单:getBlackListFromServerWithError

加入黑名单:addUserToBlackList

移出黑名单:removeUserFromBlackList

群组管理:groupManager

创建群组:createGroupWithSubject

获取群详情:fetchGroupInfo

群组:

拉人:addOccupants:toGroup:welcomeMessage

申请入群:applyJoinPublicGroup

同意入群:acceptJoinApplication

拒绝入群:declineJoinApplication

退出群组:leaveGroup

解散群组:destroyGroup

修改群名称:changeGroupSubject

修改群描述:changeDescription

群成员管理:

移除群成员:removeOccupants

加入群黑名单:blockOccupants

移出群黑名单:unblockOccupants

群消息:

屏蔽/取消屏蔽群组推送:ignoreGroupPush

管理群组的apns离线推送:getMyGroupsFromServerWithError

获取公开群组:getPublicGroupsFromServerWithCursor

实时通话:

发起实时通话:

语音:makeVoiceCall

视频:makeVideoCall

同意通话请求:answerCall

结束实时通话:endCall


我叫什么?来面试iOS开发工程师 可以干什么

每天7点-9点以组为单位 面试面试题

简历上 需把 支付 即时通讯 写上

互相模拟面试 要录视频 面试完 回顾面试的欠缺处 并改正

你可能感兴趣的:(检查内存管理问题的方式有哪些?)