首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【IOS开发进阶系列】IOS常用开发技巧专题

/Volumes/Xcode/Xcode.app /Applications/Xcode.app 2     调试技巧 2.1     日志打印类 2.1.1 让Xcode的控制台支持LLDB类型的打印...不用导入头文件,即可在控制台里使用po命令打印出model的属性和值 2.1.8 给category添加属性的小技巧     这是运用到了对象关联, 如果不会的请看这篇文章: 时空传送门 .h 文件...Objective-C #define BLOCK_EXEC(block, ...) if (block) { block(__VA_ARGS__); };  // 宏定义之前的用法 /* if (completionBlock...当给僵尸对象发送消息时,会抛出一个可描述的异常,且调试器会在出错代码行中断下来哦。...代码基础 5.1     数据类型相关 5.1.1 Objective-C中的instancetype和id区别     instancetype的作用,就是使那些非关联返回类型的方法返回所在类的类型!

45940

OC - 属性关键字和所有权修饰符

1.4 可空性 Apple Blog:Nullability and Objective-C 苹果在 Xcode 6.3 引入的一个 Objective-C 的新特性nullability annotations...这些关键字可以用于属性、方法返回值和参数中,来指定对象的可空性,这样编写代码的时候就会智能提示。在 Swift 中可以使用!和?...引入nullability annotations一方面为了让 iOS 程序员平滑地从 Objective-C 过渡到 Swift,另一方面也促使开发者在编写 Objective-C 代码时更加规范,减少同事之间的沟通成本...关键字__nullable和__nonnull是苹果在 Xcode 6.3 中发行的。由于与第三方库的潜在冲突,苹果在 Xcode 7 中将它们更改为_Nullable和_Nonnull。...使用规范: 对于属性、方法返回值、方法参数的修饰,使用:nonnull/nullable; 对于 C 函数的参数、Block 的参数、Block 返回值的修饰,使用:_Nonnull/_Nullable

1.4K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS 面试策略之语言工具-Objective-C

    简单地来说,就是代码中自动加入了 retain/release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了。...加分回答: 内存泄漏可以用 Xcode 中的 Debug Memory Graph 去检查: [image] 同时 Xcode 也会在 runtime 中自动汇报内存泄漏的问题: [image] 3.请说明并比较以下关键词...加分回答: __weak 和 __block 的使用场景几乎与 block 息息相关。而所谓 block,就是 Objective-C 对于闭包的实现。...两者的区别首先在于 block 集中代码块而代理分散代码块,所以 block 更适用于轻便、简单的回调,如网络传输。而代理适用于公共接口较多,这样做也更易于解耦代码架构。...Objective-C 面试实战题 8.属性声明代码风格考查 关键词:#属性声明 @property (nonatomic, strong) NSString *title; @property (assign

    68520

    iOS工程师必看的 20 道 面试题

    __block用于修饰某些block内部将要修改的外部变量。 __weak和__block的使用场景几乎与block息息相关。而所谓block,就是Objective-C对于闭包的实现。...简单地来说,就是代码中自动加入了retain/release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了。...内存泄漏可以用Xcode中的Debug Memory Graph去检查,同时Xcode也会在runtime中自动汇报内存泄漏的问题。 6. 下面代码中有什么bug?...Objective-C中,初始化方法无法保证所有成员变量都完成初始化;编译器对属性设置并无警告,但是实际操作中会出现初始化不完全的问题;初始化方法与普通方法并无实际差别,可以多次调用。...runtime执行的是编译后的代码,这时它可以动态加载对象、添加方法、修改属性、传递信息等等,runtime的运行机制就是Objective-C的动态特性。 Swift目前被公认为是一门静态语言。

    3.8K40

    Whats New in LLVM 9

    我觉得 LLVM 9 的亮点如下: 支持 Objective-C API 可用性检查 新增一些对隐患代码的静态分析检查和 warning 更快的 LTO,使其可以真正使用 API Availability...这些在运行时才能生效的代码很容易编写出错,而且需要测试人员付出很大工作量来覆盖到各个版本的系统。检查类、实例方法、类方法等是否可用时需要写的代码也不同,很蛋疼呦。...Xcode 9 会针对这种情况发出 warning:”Block captures an autoreleasing out-parameter, which may result in use-after-free...__attribute__ 其实并不是 Objective-C 的语法,而是 Clang 的属性。...有关 Clang 的各种属性定义,请查看 Attributes in Clang 探索方法返回值内存管理的奥秘 先做两种情况的实验,查看汇编代码,并总结: 方法为 alloc/new/copy/mutableCopy

    2.5K100

    iOS开发笔记(六)

    编辑模式 [cell addSubview: subView]添加的subView,不会随着模式改变而改变位置; 2、Block修改外部变量 先看看一段简单的代码,看看NSLog会输出什么?...代码是否存在问题?...%d", a, b, c); } 问题1:在Block中修改栈内临时变量,需要添加__block关键字声明; 问题2:在Block中修改@implementation 中声明的属性变量,也需要添加Weak-Strong...内外添加NSLog(@"%p %p %p", &a, &b, &c);,可以而查看调用前后的地址变化; 如果还想深入了解,可以入手一本《Objective-C高级编程 iOS与OS X多线程和内存管理...这个状况在今年使用SVN同步代码之后首次出现,因为SVN拉取最新的代码后Xcode会进行Index操作,怀疑是svn进程异常导致Xcode的Index逻辑异常。

    88150

    ios知识架构

    4.集成开发测试环境Xcode:包括编码、编译、运行、测试、UI可视化构建、APP Sotre发布等工作均可以在此环境下完成。 图1:ios知识总体架构 上述四个方面的知识对于ios程序开发缺一不可。...其中开发语言是基础,ios SDK是核心,Xcode是工具,App架构是必须遵循的基本规则。...Xcode App Distribution Guide Internationalization and Localization Guide Programmming With Objective-C...具体各Framework的功能和分类见下表: 表1:iOS Framework 分类和简述 综上所述,ios开发最基础的就是Objective-C或Swift语言、Foundation和UIKit框架中的基本内容及...Xcode的简单使用;进一步就是数据库、网络、图形动画、音视频、系统安全和ios专用业务接口(如地图、加速器、健康、语音识别、Web.....)的调用和多线程的使用,此时对Xcode使用会增加单元测试、

    56930

    30天从零接手ios开发

    由于公司原因,唯一会ios的伙伴要离开了,临时要接手ios的开发任务,只有30天的交接时间,记录下这个过程 一开始,给自己定的步骤是这样的 学习objective-c语言(书本:objective-c应用开发全程实录...ios开发最新的书籍都是6年前的了,最近几年都没有入门的ios开发的书籍出来,看来最新学ios的人太少了吧 oc的学习过程没什么问题,大概耗费5天的时间,看完了objective-c应用开发全程实录这本书...的十几个回调方法;还有熟悉字体,颜色大小等各种布局的写法,刚开始写还是有点吃力 上手过程中,很不习惯的还有IDE,要重新熟悉Xcode的快捷键,还有很多功能,其他IDE有提供,但是Xcode上没有,只能手动写...,其他的只能放后面待有空了,再来补上 实际需求上手 光熟悉代码还远远不够,还是要自己独立完成需求开发,刚好目前手上有两个ios的开发需求,于是就拿来练手 实际写代码,一开始最难的是不熟练,对OC语言的不熟练...,选几个列取下 方法的调用,需要加中括号 [UILabel alloc] 上面的代码,代表执行UILabel类的alloc方法 对变量的声明,需要指定属性特性 @property(copy, nonatomic

    33540

    ARC(Automatic Reference Counting )技术概述

    这里我把此技术翻译为自动内存计数器管理技术,下图是使用和不使用此技术的Objective-C代码的区别。 ?...ARC技术是随着XCode4.2一起发布的,在缺省工程模板中,你可以指定你的工程是否支持ARC技术,如果你不指定工程支持ARC技术,在代码中你必须使用管理内存的代码来管理内存。...ARC在编译期间为每个Objective-C指针变量添加合适的retain, release, autorelease等函数,保存每个变量的生存周期控制在合理的范围内,以期实现代码上的自动内存管理。...使用alloc申请一块内存后,其他的都可以交给运行期的自动管理了。 不能在C语言中的结构中使用Objective-c中的类的指针。 请使用类类管理数据。...NSZone不再需要—本来这个类已经被现代Objective-c废弃。 ARC在函数和便利变量命名上也有一些新的规定 禁止以new开头的属性变量命名。

    1.7K160

    《Motion Design for iOS》(二十一)

    一旦你完成你动画的完美动作,你只需要插入阻尼、刚度和质量值到你的动画代码中,然后无论你动画什么都会和你之前正确的值的动作一样。...对象知道了它的开始值和结束值,以及我们想要模仿的弹簧的准确属性,我们现在可以把它添加到我们想要移动的CALayer上去了。...现在如果你想要在Swift工程中使用JNWSpringAnimation,由于你是使用一个Objective-C框架,你需要使用一些称为“桥街头”的东西让Xcode知道你想要在你的Swift代码中使用非...酷的地方在于当你想要在你的Swift代码中使用它们时,你不需要有任何import说明,Xcode会处理它。...这就是Swift代码和Objective-C代码会创建的一样的动画。 查看完整合集:https://github.com/Cloudox/Motion-Design-for-iOS 查看作者首页

    39720

    编码篇-ARC下的内存泄漏

    循环引用 block引起的循环引用。 某个类将block作为自己的属性变量,然后该类在block的方法体里面又使用了该类本身;相互持有,导致都释放不了。...block不是self的属性或者变量时,在block内使用self不会循环引用; 像这样的方法中调用self,不会引起,但是属性的形式中调用self就会以 [self.myTest doSomeTest...我遇到过一种情况,就是给UITableViewCell设置block属性响应事件,在block中强引用了self, 导致self->tableView->cell->self形成循环。...下面的代码在书写的时候Xcode是不会报任何错误和警告的。但是实际上已经形成了循环引用。造成了内存泄漏。...所以单例持有的代码块中要用弱引用,原因是:单例不会被释放掉,它会一直持有block,导致该block所在的ViewController释放不掉。

    1.7K20

    测试 View Controllers

    起初可能有点难以理解,多看几次后,你就能体会到它的强大和简单。 Objective-C 中有个用来 mocking 的强大工具叫做 OCMock。...它是一个非常成熟的项目,充分利用了 Objective-C 运行时强大的能力和灵活性。它使用了一些很酷的技巧,让通过 mock 对象来测试变得更加有趣。...这个上古神器从 1997 年起就伴随在 Objective-C 开发者左右,比第一款 iPhone 发布还早 10 年。现在,它已经集成到 Xcode 中了。...现在,我们要触发代码运行。我们就调用我们希望测试的方法。...注意,前两个测试,我们通过比较指针来完成;我们不使用-isEqual:,是因为我们实际希望测试的是result,cell和configuredCell都是同一个对象。

    73320

    iOS小技能:NSLog调试技巧

    preprocessor macro setting in an Xcode project 1.1 利用Configuration 配置不同的编译环境 应用场景:一个应用对应多个域名的情况,测试地址...、生产地址、后台接口开发者的个人主机地址 1.开发人员环境 (Other) 连接写服务人的电脑,与服务器联调使用 2.开发环境(Debug) 完成需求,代码上传,在外网开发服务器调试 3.测试环境 (Testing...,不好区分,可以在xcode配置脚本,在编译时根据不同环境制作不同的icon图标。...Improved logging in Objective-C 宏 格式说明符 描述 func %s 当前函数签名 LINE %d 在源代码文件的当前行号 FILE %s 源代码文件的完整路径 PRETTY_FUNCTION...app 的提交代码中加入 benchmarking。

    87740
    领券