草庐IT

fno-objc-arc

全部标签

objective-c - arc4random 和 arc4random_uniform 有什么区别?

这个问题在这里已经有了答案:Arc4randommodulobiased(1个回答)关闭7年前。我已经看过关于Objective-C中random和arc4random之间差异的旧帖子,并且我已经在网上看到了这个问题的答案,但我真的没有理解,所以我希望这里的人能以更容易理解的方式解释它。使用arc4random和arc4random_uniform生成随机数有什么区别? 最佳答案 arc4random返回一个介于0和(2^32)-1之间的整数,而arc4random_uniform返回一个介于0和您传递的上限之间的整数。来自man3

objective-c - 在 ObjC 实现文件中声明的实例变量

我在观看WWDCARC介绍视频时,当一些Apple工程师谈到Stack示例时,我看到了以前在ObjC中从未见过的东西。以下代码用于ARC的堆栈示例:@implementationStack{//instancevariabledeclaredinimplementationcontextNSMutableArray*_array;}-(id)init{if(self=[superinit])_array=[NSMutableArrayarray];returnself;}-(void)push:(id)x{[_arrayaddObject:x];}-(id)pop{idx=[_arra

objective-c - 通过 ObjC 类别覆盖方法并调用默认实现?

使用类别时,您可以使用自己的方法覆盖实现方法,如下所示://BaseClass@interfaceClassA:NSObject-(NSString*)myMethod;@end@implementationClassA-(NSString*)myMethod{return@"A";}@end//Category@interfaceClassA(CategoryB)-(NSString*)myMethod;@end@implementationClassA(CategoryB)-(NSString*)myMethod{return@"B";}@end在包含类别后调用方法“myMetho

ios - 在 Xcode 5 中运行代码覆盖时出现数十个 "profiling:invalid arc tag"

在Xcode5中启用代码覆盖率的情况下运行我的测试目标时,我在构建输出中收到以下数十条消息:profiling:invalidarctag(0x...)它似乎不会影响测试,因为它们成功完成,并且GCDA覆盖文件也按预期生成。知道消息的含义,或者如何隐藏消息/解决问题,因为它们会使构建输出变得困惑,并且很难找到测试用例结果。 最佳答案 这很可能是因为构建工具未能将当前结果合并到现有的.gcda覆盖文件中。如DaveMeehanpointsouthere,有一种通过清理产品构建文件夹来处理这个问题的蛮力方法,但一个不那么硬核的方法是从生

objective-c - iOS 8 Mapkit Objc 无法获取用户位置

我正在使用Obj-CNOTSWIFT在iOS8中使用MapKit。我无法获取设置为0.00、0.00的设备位置,并且出现错误:TryingtostartMapKitlocationupdateswithoutpromptingforlocationauthorization.Mustcall-[CLLocationManagerrequestWhenInUseAuthorization]or-[CLLocationManagerrequestAlwaysAuthorization]first.我已经实现了:(我一次只尝试了一个,没有运气)if(IS_OS_8_OR_LATER){[se

objective-c - ARC时代的属性(property)与ivar

据我了解,现在设置ivar会保留分配给它的对象,因为设置变量默认为strong限定符。因为ivars在声明它们的对象的范围内,而strong将对象保留在变量的范围内,这意味着当包含ivar的对象仍然存在时,永远不会释放ivars值。这对吗?如果是这样,我是否认为在内存管理方面,保留(强)属性和简单ivar之间不再有区别? 最佳答案 如果是变量:在使用ARC的类中声明.仅用于类实现(不作为类接口(interface)的一部分公开)。不需要任何KVO.不需要任何自定义getter/setter。然后将其声明为没有相应@property/

objective-c - 如何在 xcode 项目中启用/禁用 ARC?

如果已在禁用ARC的情况下创建项目,我该如何启用它,反之亦然? 最佳答案 打开您的项目并选择编辑->重构->转换为Objective-CARC。这将开始检查您的代码是否已准备好进行转换。另见Clang文档:Objective-CAutomaticReferenceCounting(ARC)如何禁用ARC已回答here 关于objective-c-如何在xcode项目中启用/禁用ARC?,我们在StackOverflow上找到一个类似的问题: https://s

objective-c - ARC 下的 NSString 属性应该是强的还是复制的?

不使用ARC编译时,建议对NSString等数据类型使用copy属性。我找不到关于在ARC模式下使用copy的适当文档。有人能告诉我什么适用于ARC吗? 最佳答案 仍然建议复制,因为您希望避免传递可变字符串然后在您不知情的情况下更改它。一份副本保证你拥有的字符串不会改变。 关于objective-c-ARC下的NSString属性应该是强的还是复制的?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/

objective-c - 如何在对象内使用 objc_setAssociatedObject/objc_getAssociatedObject?

如果我在类别实现中使用objc_setAssociatedObject/objc_getAssociatedObject将模拟实例变量存储在setter方法中,我将如何访问getter方法中的键,因为在setter方法中声明的任何变量都将超出getter的范围方法?编辑:澄清一下,如果我要使用以下模式,我应该在哪里声明STRING_KEY以便我可以在setter和getter方法中使用它。@interfaceNSView(simulateVar)-(void)setSimualtedString:(NSString*)myString;-(NSString*)simulatedStri

iphone - 什么是 objc_setAssociatedObject() 以及在什么情况下应该使用它?

在我接手的一个项目中,原作者选择使用objc_setAssociatedObject(),我不是100%清楚它的作用或他们决定使用它的原因。我决定查一下,不幸的是,文档并没有很好地描述它的用途。objc_setAssociatedObject使用给定键和关联策略为给定对象设置关联值。voidobjc_setAssociatedObject(idobject,void*key,idvalue,objc_AssociationPolicy策略)参数对象关联的源对象。键关联的key。值与对象的键键关联的值。传递nil以清除现有关联。政策协会的政策。有关可能的值,请参阅“关联对象行为”。那么这