全球中文玩家俱乐部 Chinese players club of the Global .

侠外游戏论坛

 找回密码
 立即注册
快捷导航
搜索
视听
视听
图片
图片
段子
段子
小说
小说
查看: 287|回复: 1
打印 上一主题 下一主题
收起左侧

[闲聊页游] [ios11描述文件]【ios11描述文件导出】

[复制链接]

3117

主题

6313

帖子

3万

积分

ミ侠外护法ミ

Rank: 7Rank: 7Rank: 7

  • 威望
    0 点
    银子
    19727 两
    武功
    12961 阶
    元宝
    0 锭
    精华
    0
  • 跳转到指定楼层
    俺是撸主
    发表于 2021-1-4 05:46:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    马上注册,结交更多侠客,享用更多功能,让你轻松玩转侠外论坛。

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x


    国庆后lucio开始由Android开发转做iOS开发了,在这之前lucio可是什么苹果产品都没用过的小白,这里po一下小白的iOS开发学习历程,包括看的书、视频、文章,看看lucio如何从小白快速(并不快┓(´∀`)┏其实)入门iOS开发的。
    《Objective-C基础教程》,很好。这里整理下后面几章的学习笔记,方便复习。
    《Objective-C基础教程》第8章 Foundation Kit介绍
    《Objective-C基础教程》第9章 内存管理
    《Objective-C基础教程》第10章 对象初始化
    《Objective-C基础教程》第11章 属性
    《Objective-C基础教程》第12章 类别
    《Objective-C基础教程》第13章 协议
    《Objective-C基础教程》第14章 代码块和并发性
    斯坦福大学公开课:iOS 8开发
    这个公开课每个iOS版本都有,基本是用一个demo来讲解iOS开发,每个版本的demo都不一样,iOS7是用Objective-C的,我也是看完了才知道,但看iOS8的课程也是能同步用Objective-C完成demo的,两边的方法名称完全一样,只有语法的不同。
    贴一下里面关于MVC模式的讲解
    MVC模式
    Model与View不能通信:Model与UI完全独立,UI组件都是generic的,需要Controller为其翻译并格式化Model的信息用于显示。Controller->View:View里的UI组件以outlet形式存在于Controller中。View->Controller:Controller自己注册target,告诉View当有指定的action(如按钮点击)发生时,发送这个action给我这个target。View通过delegate将should、will、did等动作的响应交给Controller处理。View不拥有其显示的数据,它是通过data source(也算一种特殊的delegate)从Controller那里拿数据,而数据来自Model。 Model->Controller:Model将自己的属性变化通过广播发送给感兴趣的订阅者(一般是Controller),Notification & KVO,然后Controller去Model中取新的数据。





    看随书的源码可以快速了解各种控件的使用,以及图形、动画相关知识。
    The official raywenderlich.com Objective-C style guide.
    中文翻译:
    需要多注意里面一些细节的东西:
    copy和strong的选择:把一个对象赋值给一个属性变量,当这个对象变化了,如果希望属性变量变化就使用strong属性,如果希望属性变量不跟着变化,就是用copy属性。推荐使用代码提示中宏定义的NS_ENUM()枚举模块来创建,它可以提供更严谨的类型检测和代码补完功能。私有变更应该在类的私有类别中,不需要加private等词语来进行修饰。私有类别可以在命名为+Private.h的文件里提供。init方法中返回值使用instancetype取代id作为返回。[原因]单例必须线程安全。:]
    总结一套自己的View代码规范,日后需要慢慢完善。
    // 通用viewController/view代码结构
    #pragma mark - LifeCycle Menthod
    - (void)viewDidLoad {
         [super viewDidLoad];
         [self initView()];
         [self initData()];
    }
    - (void)viewWillAppear:(BOOL)animated {
         [super viewWillAppear:animated];
    }
    - (void)didReceiveMemoryWarning {
         [super didReceiveMemoryWarning];
    }
    - (instancetype)init {}
    - (void)dealloc {}
    #pragma mark - Delegate Menthod
    #pragma mark - Event response
    - (void)xxxClick(){
    }
    #pragma mark - Public
    #pragma mark - Private
    - (void)initView{
         //DO initView
         [self initConstrains()];
    }
    - (void)initConstrains{
         //DO initConstrains
    }
    - (void)initData{
         //DO initData
    }
    #pragma mark - getter && setter
    // 1. 属性(特别是View)的初始化放在getter,在initView里面只addSubview。
    // 2. 关于第1点的lazy initialization,对于需要判空的,线程不安全的以及自动优化相关的属性需要多加考虑。
    // 3. initConstrains用于初始化约束,尽量使用makeConstraints,如果约束需要动态更新,重写updateViewConstraints或updateConstraints
    关于注释第2点:
    Good or bad practice? Initializing objects in getter
    lazy initialization,对于需要判空的,线程不安全的以及自动优化相关的属性需要多加考虑,原因如上。
    iOS项目工程及目录结构
    区分不同层次的通用组件。
    iOS 项目的目录结构能看出你的开发经验



    两个例子可以大概参考下。

    以上内容就是[ios11描述文件]【ios11描述文件导出】的相关内容介绍,喜欢侠外游戏论坛的朋友可以关注我们。
                  12下一页
    这里是你的个性签名位置,可在“设置”-“个人信息”-“个人签名”处修改。
    沙花按摩
     楼主| 发表于 2021-1-4 05:47:38 | 只看该作者
    CocoaPods安装和使用教程
    Carthage 包管理工具,另一种敏捷轻快的 iOS & MAC 开发体验
    CoaoaPods 是一套整体解决方案,我们在 Podfile 中指定好我们需要的第三方库。然后 CocoaPods 就会进行下载ios11描述文件,集成,然后修改或者创建我们项目的 workspace 文件,这一系列整体操作。
    相比之下,Carthage 就要轻量很多,它也会一个叫做 Cartfile 描述文件,但 Carthage 不会对我们的项目结构进行任何修改,更不多创建 workspace。它只是根据我们描述文件中配置的第三方库,将他们下载到本地,然后使用 xcodebuild 构建成 framework 文件。然后由我们自己将这些库集成到项目中。Carthage 使用的是一种非侵入性的哲学。
    Masonry
    Masonry是一个轻量级的布局框架 拥有自己的描述语法 采用更优雅的链式语法封装自动布局 简洁明了 并具有高可读性 而且同时支持 iOS 和 Max OS X Masonry介绍与使用实践
    AFNetworking
    AFNetWorking一款轻量级网络请求开源框架,基于iOS和mac os 网络进行扩展的高性能框架 IOS 网络请求之 AFNetWorking 3.x 使用
    FMDB
    FMDB是iOS平台的SQLite数据库框架,FMDB以OC的方式封装了SQLite的C语言API [iOS]数据库第三方框架FMDB详细讲解  FMDB 使用方法
    libextobjc
    libextobjc一个提供语言级别各种小功能的库
    FLEX 应用内调试神器



    SDWebImage 图片加载框架
    Reachability 检测手机网络状态
    MJRefresh 下拉刷新,上拉加载更多组件
    Toast Toast
    MBProgressHUD 半透明提示框
    DateTools 用于提高Objective-C中日期和时间相关操作的效率 DateTools使用「日期工具库」
    更多:
    iOS 第三方库、插件、知名博客总结
    UIScrollview与Autolayout
    scrollView比较特殊,因为它有个contentSize的属性。ScrollView的contentSize的大小是由其subview的constraints来决定的。
    为了正常显示,使用一个单一的containerView占满全部,然后把所有的subview添加到containerView中。(亲测)
    Where should I be setting autolayout constraints when creating views programmatically?
    How to Use updateConstraints?
    updateViewConstraints与updateConstraints可以在需要更新大量约束时重写,对于只初始化一次而不需要修改的约束,写到类似于viewDidLoad的方法中比较好。



    The Mystery of the +requiresConstraintBasedLayout
    基于约束的布局是懒触发的,只有在添加了约束的情况下,系统才会自动调用 -updateConstraints 方法,如果把所有的约束放在 updateConstraints中ios11描述文件,那么系统将会不知道你的布局方式是基于约束的,所以重写+requiresConstraintBasedLayout 返回YES就是明确告诉系统:虽然我之前没有添加约束,但我确实是基于约束的布局!这样可以保证系统一定会调用 -updateConstraints 方法 从而正确添加约束。
    透彻理解block中weakSelf和strongSelf
    __weak __typeof(self)weakSelf = self;
    [self.context performBlock:^{
        __strong __typeof(weakSelf)strongSelf = weakSelf;
        [strongSelf doSomething];
    }];
    当block直接或间接的被self持有时,需要weakSelf。其他情况下加weakSelf也没什么问题。
    使用libextobjc库可以简化下代码:
    #import "EXTScope.h"
    @weakify(self)
    [self.context performBlock:^{
        @strongify(self)
        [self doSomething];
    }];
    iOS本地数据存取,看这里就够了
    XML属性列表(plist)归档Preference(偏好设置)NSKeyedArchiver归档(NSCoding)SQLite3Core Data
    // TODO: 2017/10/23 继续完善本文直到结束入门
    When they are needed, comments should be used to explain why a particular piece of code does something. Any comments that are used must be kept up-to-date or deleted.
    ——The official raywenderlich.com Objective-C style guide.
    JAVA设计模式之单例模式
    使用dispatch_once创建单例
    ViewController的几个属性:edgesForExtendedLayout、automaticallyAdjustsScrollViewInsets、extendedLayoutIncludesOpaqueBars
    如何做好IOS View的布局
    布局原则:
    《Effective Objective-C 2.0:编写高质量iOS与OS X代码的52个有效方法》阅读笔记

    以上内容就是[ios11描述文件]【ios11描述文件导出】的相关内容介绍,喜欢侠外游戏论坛的朋友可以关注我们。
                  上一页12
    这里是你的个性签名位置,可在“设置”-“个人信息”-“个人签名”处修改。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    发布主题 上个主题 下个主题 快速回复 收藏帖子 返回列表 搜索

    联系我们|Archiver|手机版|小黑屋|侠外网 ( 豫ICP备13018943号-1 )

    GMT+8, 2024-11-15 12:19 , Processed in 0.041779 second(s), 19 queries , Gzip On, Memcache On.

    Copyright © 2001-2023 侠外游戏论坛 Powered by !Zucsud X3.5

    Support By A mysterious team , A great team ! Email:

    快速回复 返回顶部 返回列表