检查内存管理问题的方式有哪些?
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点以组为单位 面试面试题
简历上 需把 支付 即时通讯 写上
互相模拟面试 要录视频 面试完 回顾面试的欠缺处 并改正