/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的作用,就是使那些非关联返回类型的方法返回所在类的类型!
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
install]; } self并没有持有block,不会构成引用循环,这是Xcode9.3之后的误报。...3、不带参数的Block Xcode 9之后如果定义一个不带参数的block,会有Warning Warning:This block declaration is not a prototype...Objective-C的对象当成是non-optional。...2、忽略整个工程的警告类型 要修改一下“-Wimplicit-retain-self”换成“-Wno-implicit-retain-self” 3、忽略几个文件的警告: 可以在pch等具有大范围作用域的头文件中包含...: #pragma clang diagnostic ignored “警告名称” 如果剔除了push与pop则后面所有的代码都具有强制消除警告作用
简单地来说,就是代码中自动加入了 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
苹果展示Objective-C 很可能是为了提高Swift互操作性(译者注:互操作性主要是指OC代码与Swift代码相互转换),但是仍然很欢迎开发者用Objective-C来完成工作。...在这篇文章中,我们就来看看Objective-C中新添加的类属性。...Objective-C 类属性 摘自 Xcode 8正式版中的说明: Objective-C now supports class properties, which interoperate with...They are never synthesized. (23891898) 翻译如下: Objective-C 现在支持类属性了,与OC 中的类属性对应的是Swift的类型属性。...,第一个是只读的integer类型,第二个是可读可写具有copy特性的NSUUID类型。
__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目前被公认为是一门静态语言。
我觉得 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
编辑模式 [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逻辑异常。
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使用会增加单元测试、
由于公司原因,唯一会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
这里我把此技术翻译为自动内存计数器管理技术,下图是使用和不使用此技术的Objective-C代码的区别。 ?...ARC技术是随着XCode4.2一起发布的,在缺省工程模板中,你可以指定你的工程是否支持ARC技术,如果你不指定工程支持ARC技术,在代码中你必须使用管理内存的代码来管理内存。...ARC在编译期间为每个Objective-C指针变量添加合适的retain, release, autorelease等函数,保存每个变量的生存周期控制在合理的范围内,以期实现代码上的自动内存管理。...使用alloc申请一块内存后,其他的都可以交给运行期的自动管理了。 不能在C语言中的结构中使用Objective-c中的类的指针。 请使用类类管理数据。...NSZone不再需要—本来这个类已经被现代Objective-c废弃。 ARC在函数和便利变量命名上也有一些新的规定 禁止以new开头的属性变量命名。
创建 兼容性 PureLayout的当前版本支持所有版本的iOS和OS X的,因为每个平台上推出自动布局,在这两个Swift和Objective-C ,用一个单一的代码库!...Xcode 语言支持: Swift (任何版本), Objective-C 完全兼容: Xcode 7.0 支持的最低版本: Xcode 5.0 iOS 完全兼容: iOS 9.0 最低部署版本: iOS...Objective-C的: #import “ PureLayout.h ” 这就是它 - 现在去写一些漂亮的自动布局代码!...Objective-C: #import "PureLayout.h" 这就是它 - 现在去写一些漂亮的自动布局代码!...有两点要注意: 所有的公共API方法命名空间的前缀`auto...... ' ,这也很容易让Xcode的为您键入自动完成。
一旦你完成你动画的完美动作,你只需要插入阻尼、刚度和质量值到你的动画代码中,然后无论你动画什么都会和你之前正确的值的动作一样。...对象知道了它的开始值和结束值,以及我们想要模仿的弹簧的准确属性,我们现在可以把它添加到我们想要移动的CALayer上去了。...现在如果你想要在Swift工程中使用JNWSpringAnimation,由于你是使用一个Objective-C框架,你需要使用一些称为“桥街头”的东西让Xcode知道你想要在你的Swift代码中使用非...酷的地方在于当你想要在你的Swift代码中使用它们时,你不需要有任何import说明,Xcode会处理它。...这就是Swift代码和Objective-C代码会创建的一样的动画。 查看完整合集:https://github.com/Cloudox/Motion-Design-for-iOS 查看作者首页
现代化的Objective-C在类型安全、 内存管理、性能、和其他方面都得到了增强。使你更容易编写正确的代码。在你现有 和未来的代码中使用这些改进是很重要的,会使你的代码一致、可读、灵活。...使用现代objective-c变换器自动进行转换您的代码。...更多信息请看使用Xcode重构你的代码。 Properties 一个public或private的Objective-C属性使用@property语法声明的。...关键字和其他的信息,请看“Encapsulating Data” 或者,您可以在Xcode使用现代objective-c变换器自动进行转换您的代码。...更多信息请看使用Xcode重构你的代码。
Xcode 提供了一个迁移工具,可以自动将MRC代码转换为ARC代码(如删除retain和release调用),而不用重新再创建一个项目(选择 Edit > Convert > To Objective-C...Xcode 4.1 及更早版本中不支持ARC。...ARC仅仅依靠LLVM编译器是无法完成内存管理工作的,它还需要Runtime的支持。...虽然在调试中_objc_rootRetainCount函数很有用,但最好在了解其所具有的问题的基础上来使用。 苹果对 ARC 一些问题的回答 Q: 我应该如何看待 ARC ?...幸运的是,迁移到ARC的代码很少开始泄漏,因为属性已经声明是否retain。 Q: block 是如何在 ARC 中工作的?
RegX - 专治代码强迫症的Xcode插件,使用Swift和Objective-C编写。使用代码更易读和易于理解。说明 ;菜单:xcode - “Edit-”Regx 。...KSImageNamed - 自动完成,特别是如果你正在写Objective-C,如果Xcode能自动完成文件名难道不会很伟大吗?比如图像文件的名称。...KSHObjcUML -KSHObjcUML是一个Objective-C类引用关系图的Xcode插件。...XcodeSwiftSnippets - XcodeSwiftSnippets,提供了很多可以在Xcode上使用的Swift代码片段,通过自动补全的方式极大的提高了开发效率,另外还有Objective-C...ESJsonFormat-Xcode - 将Json格式化输出为模型的属性。 SCXcodeMiniMap - Xcode迷你小地图-SCXcodeMiniMap。
MonoMac的设计原则与MonoTouch非常接近,它充分考虑到.NET程序员的习惯需求,例如使用Lambda表达式和委托来表示Objective-C API中的“block”。...而在UI层面上则是大量的Objective-C编写的API,例如Foundation和AppKit。...下面我们就用MonoDevelop和Xcode一起使用来完成第一个Mac Helloworld程序的开发,下面的内容主要基于这篇博客http://www.satter.org/2010/09/net-development-for-os-x.html...MonoMac使用Xcode的模式构建UI应用,Xcode使用MVC模型。XIB文件中包含UI和你的代码,也就是View。...再将label右侧的小圆点拖动至NSTextField,当你释放鼠标你要看你NSTextField标签所联系在一起: 快完成了。
循环引用 block引起的循环引用。 某个类将block作为自己的属性变量,然后该类在block的方法体里面又使用了该类本身;相互持有,导致都释放不了。...block不是self的属性或者变量时,在block内使用self不会循环引用; 像这样的方法中调用self,不会引起,但是属性的形式中调用self就会以 [self.myTest doSomeTest...我遇到过一种情况,就是给UITableViewCell设置block属性响应事件,在block中强引用了self, 导致self->tableView->cell->self形成循环。...下面的代码在书写的时候Xcode是不会报任何错误和警告的。但是实际上已经形成了循环引用。造成了内存泄漏。...所以单例持有的代码块中要用弱引用,原因是:单例不会被释放掉,它会一直持有block,导致该block所在的ViewController释放不掉。
起初可能有点难以理解,多看几次后,你就能体会到它的强大和简单。 Objective-C 中有个用来 mocking 的强大工具叫做 OCMock。...它是一个非常成熟的项目,充分利用了 Objective-C 运行时强大的能力和灵活性。它使用了一些很酷的技巧,让通过 mock 对象来测试变得更加有趣。...这个上古神器从 1997 年起就伴随在 Objective-C 开发者左右,比第一款 iPhone 发布还早 10 年。现在,它已经集成到 Xcode 中了。...现在,我们要触发代码运行。我们就调用我们希望测试的方法。...注意,前两个测试,我们通过比较指针来完成;我们不使用-isEqual:,是因为我们实际希望测试的是result,cell和configuredCell都是同一个对象。
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。
领取专属 10元无门槛券
手把手带您无忧上云