直接使用实例变量_firstName与使用存取方法self.firstName有几个区别:

617-正则表达式匹配用户名话题和链接

接口文档

接口文档使用的是 MKDocs,具体安装方法以及使用可以参考官网的介绍。

  • ✅ 获取今日头条接口(接口获取方式请看 使用 Charles 获取 https
    的数据)
  • ✅ 首页
  • ✅ 查看图文详情(点击第一个 cell)
  • ✅ 保存图片功能
  • ✅ 添加新闻分类界面
  • ✅ 问答界面
  • ✅ 视频界面
  • ✅ 视频详情界面
  • ✅ 播放视频功能
  • ✅ 微头条界面
  • ✅ 小视频界面
  • ✅ 播放小视频功能
  • ✅ 我的界面
  • ✅ 切换主题功能
  • ✅ 关注用户详情界面
  • ✅ 关注和取消关注功能
  • ✅ 图文混排,显示表情,高亮用户名,话题
  • ✅ 评论界面
  • ✅ 点赞列表界面
  • ✅ 登录界面
  • ✅ 设置界面
  • ✅ 离线下载界面

    澳门微尼斯人手机版 1zan.png

  1. 项目搭建
    • 101-项目搭建
    • 102-补充内容
    • 102-自定义 tabBar
  2. 我的界面
    • 201-我的界面分析
    • 202-我的界面实现
    • 203-Swift的核心
    • 204-添加网络请求以及创建模型
    • 205-返回数据显示到 tableView
    • 206-自定义我的界面 cell
    • 207-扩展cell注册方法
    • 208-自定义我的关注 cell
    • 209-自定义关注用户 cell
    • 210-自定义 tableViewHeader
    • 211-更换主题
    • 212-iPhoneX 适配介绍
    • 213-iPhoneX 适配和设置 tabbar 的主题
  3. 登录及设置界面
    • 301-登录界面实现
    • 302-登录界面更换主题
    • 303-实现设置界面
    • 304-设置界面添加点击功能
    • 305-修改设置界面代码
  4. 离线下载界面
    • 401-离线下载界面
    • 402-集成 sqlite3
    • 403-修改一些变化
    • 404-建表
  5. 用户详情界面
    • 501-用户详情界面的分析
    • 502-创建用户详情头部
    • 503-添加相关接口
    • 504-填充数据
    • 505-headerView 的点击事件
    • 506-设置主题颜色
    • 507-添加 topTabView
    • 508-添加 bottomView
    • 509-从xib加载的扩展方法
    • 510-自定义弹出视图
    • 511-自定义导航栏
    • 512-添加相关推荐 view
    • 513-导航栏补充
  6. 用户详情动态界面
    • 601-用户详情动态数据显示
    • 602-创建 collectionView
    • 603-动态 cell 分析及创建枚举
    • 604-计算 collectionView 的宽高
    • 605-自定义发布视频或文章view
    • 606-实现引用评论布局
    • 607-Int 扩展
    • 608-动态 cell 显示时间
    • 609-自定义首页导航栏
    • 610-设置微头条及导航栏样式
    • 611-动态界面查看大图
    • 612-添加 item_type
    • 613-修改动态cell的显示问题
    • 614-显示 emoji 表情
    • 615-设置用户名高亮显示
    • 616-自定义 UILabel 显示富文本
    • 617-正则表达式匹配用户名话题和链接
    • 618-实现富文本点击回调
    • 619-根据用户名获取 uid 进行传值
    • 620-根据话题获取 cid 进行传值
    • 621-用户动态添加上拉刷新
    • 622-根据不同类型刷新
    • 623-引用显示@用户名
    • 624-处理其他 topTab 的数据显示
    • 625-添加用户详情中问答的接口
    • 626-自定义用户详情的问答 cell
    • 627-用户详情问答加载更多数据
    • 628-创建动态的详情控制器
    • 629-自定义动态详情导航栏
    • 630-设置导航栏样式
    • 631-自定义动态详情的 headerView
    • 632-计算动态详情头部的高度
    • 633-添加用户动态详情评论的接口
    • 634-自定义动态详情评论cell
    • 639-修改用户详情控制器4
    • 638-创建topTabScrollview
    • 637-修改详情控制器3
    • 636-修改详情控制器2
    • 635-修改详情控制器1
  7. 用户详情动态详情界面
    • 701-修改动态详情评论
    • 702-添加点赞用户列表接口
    • 703-添加加载更多数据的footer
    • 704-自定义点赞用户cell
    • 705-cell添加点击事件
    • 706-处理导航栏出现的bug
    • 707-动态详情控制器底部添加toolbar
    • 708-自定义评论的view
    • 709-监听键盘弹起和隐藏
    • 710-textView 的一些设置
    • 711-自定义表情键盘
    • 712-自定义emoji的cell
    • 713-修改表情键盘视图创建方式
    • 714-显示emoji表情
    • 715-设置 collectionView 的布局
    • 716-修改约束
    • 717-修改约束2
    • 718-修改 emoji 数组及 plist 文件
    • 719-设置 item 横向排列
    • 720-解决 collectionView 分页不正确的问题
    • 721-插入表情到 textView
    • 722-表情键盘添加 pageControl
  8. 问答界面
    • 801-添加问答接口
    • 802-修改问答控制器
    • 803-自定义头部
    • 804-设置问答底部view
    • 805-自定义问答 cell
    • 806-label添加扩展方法
    • 807-加载更多问答数据
  9. 小视频界面
    • 901-添加首页新闻数据和小视频标题数据接口
    • 902-添加导航栏标题
    • 903-创建小视频子控制
    • 904-获取小视频数据
    • 905-自定义小视频cell
    • 906-添加上拉刷新和加载更多
    • 907-小视频播放界面控制器
    • 908-显示小视频数据
    • 909-添加小视频播放器
  10. 视频界面实现
    • 1001-解析视频的真实播放地址
    • 1002-解决视频播放时出现的问题

澳门微尼斯人手机版 2

- isEqual:object;- (NSUInteger)hash;
  • Xcode 9.2
  • Swift 4
  • iOS 11

A1:cocopods导入后记得关闭整个项目然后从.xcworkspace文件进入

NSObject协议中,有两个用于判断等同性的关键方法:

澳门微尼斯人手机版 310.gif澳门微尼斯人手机版 411.gif澳门微尼斯人手机版 51.gif澳门微尼斯人手机版 62.gif澳门微尼斯人手机版 73.gif澳门微尼斯人手机版 84.gif澳门微尼斯人手机版 95.gif澳门微尼斯人手机版 106.gif澳门微尼斯人手机版 117.gif澳门微尼斯人手机版 128.gif澳门微尼斯人手机版 139.gif

这里参考文章:

@dynamic
可以阻止编译器自动合成存取方法。而且编译时发现没有定义存取方法,也不会报错,它相信这些方法能在运行期间找到。

101-项目搭建

A2: info.plist->Status bar is initially hidden-YES;View
controller-based status bar appearance-NO;

4). 使用属性方法助于断点调试

四、展望

objc_msgSend会依据接受者与选择器的类型来动态调用适当的方法。首先,在接收者所属的类中搜寻“方法列表”,若找到与选择器名称相符合的方法,就跳转至其实现的代码;若找不到,就沿着继承体系继续向上查找;若最终没有找到,就执行“消息转发“(message
forwarding)机制。同时,objc_msgSend会将匹配的结果缓存在类的“快速映射表”中,以后遇到与选择器相同的消息就可以直接执行了。

NSLog;

将两个对象关联起来,再别的地方需要用到的时候再读取出来,类似给对象动态添加属性。

2.3d touch实现快拍功能:

这个在做method swizzling的时候会经常用到。

官方描述:The GPUImage framework is a BSD-licensed iOS library that lets
you apply GPU-accelerated filters and other effects to images, live
camera video, and movies. In comparison to Core Image (part of iOS 5.0),
GPUImage allows you to write your own custom filters, supports
deployment to iOS 4.0, and has a simpler interface. However, it
currently lacks some of the more advanced features of Core Image, such
as facial detection.
GPUImage是使用GPU处理图像的、他可以对图片、实时画面、视频进行处理。他允许你自定义滤镜、支持iOS4.0。然而,目前缺乏核心形象的一些更高级的功能,比如面部检测。

3). 直接访问实例变量,不会触发KVO通知,也有可能出现问题。

注意:如果你在为系统“分享”犯愁的话,我悄悄的告诉你,这个是上架后系统自带的系统分享功能

1).
直接访问实例变量不需要消息转发机制,编译器生成带啊直接访问实例变量所在的内存区域,速度快。

1.一个快速图标生成的网站,以后图标适配不用再苦逼的用ps改分辨率了

用类似C语言的语法,如:

二、Q&A

OC的对象总是分配在“堆”上的。但是我们不需要使用 malloc 和
free来分配和释放这些内存,这些工作由OC的“引用计数“自动完成。

– (UIImage *)normalizedImage {

if(self.imageOrientation == UIImageOrientationUp)return self;

UIGraphicsBeginImageContextWithOptions(self.size, NO, self.scale);

[self drawInRect:{0,0, self.size}];

UIImage *normalizedImage =
UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return normalizedImage;

}

2).
直接访问实例变量不会调用”设置方法“,这样绕过了属性相关的”内存管理语义“,这样不太好。

早在大二上学期初,就有独立制作一款摄影类app的打算,但是那是时间不多能力不足也就搁浅了。后来中途接触了类似于HUJI
Poly
Filmborn等优秀摄影类app的时候心里那头小鹿又开始乱撞,于是便开始了翻资料码代码的生活,以下是我运用GPUImage框架制作一款相机app的过程遇到过的坑,希望对你有所帮助。

void objc_msgSend(id self, SEL cmd, ...);

But:
我在使用这个方法试图矫正所拍摄照片的时候失败了,可能的原因是我用GPUImageFilterGroup为其添加了一层滤镜,然后他的imageOrientation被初始化了,NSLog大法显示无论我横着拍还是正着拍都是UIImageOrientationRight,这个问题我还没有深究,如果有知道的小伙伴可以私信我简书。

关联时要指定存储策略,类似于属性添加内存语义。

A3:删除Assets.xcassets里面变红的图片文件

优点:

A6:info.plist-Photo Library Additions Usage Description-想访问图库

  • 原子性

-application:(UIApplication \)application
performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem
completionHandler:completionHandler {*

1).
在初始化方法中基本总是应该直接访问实例变量,除非待初始化的变量是声明在超类里,我们又在子类中无法直接访问。

澳门微尼斯人手机版 14Status
bar is initially
hidden-YES澳门微尼斯人手机版 15View
controller-based status bar appearance-NO

发表评论

电子邮件地址不会被公开。 必填项已用*标注