在引用具有getter/setter的Java POJO的内部私有变量时,我使用了以下术语:
上面有什么区别吗?如果是这样,使用的正确术语是什么?持有此实体时是否有不同的术语?
Objective-c中的"实例变量"和"属性"之间有区别吗?
我对此不太确定.我认为"属性"是一个具有存取方法的实例变量,但我可能认为错了.
虽然我有一些想法可以使用,但确切的用法仍然不清楚.有人能解释一下......?谢谢.
我没有目标C的经验,所以我遇到了一些符号的问题.在我的"AppDelegate.swift"文件中,顶部有一个"@UIMainApplication".这是什么意思?
另外,如果可能的话,您能否在C++中给我"等效"声明(如果存在)?
谢谢.
正如Apple在"Swift编程语言"中所说,似乎我们应该unowned比weak任何可能的更喜欢:
如果捕获的引用永远不会变为nil,则应始终将其捕获为无主引用,而不是弱引用.
从本页的"弱和无主参考"部分
我确实知道这两者之间的区别.但我好奇的是有没有很好的理由,宁愿 unowned比weak?我认为weak更安全,我们可以总是编写[weak obj]和可选的绑定检查,而不考虑存在的可能性obj.
它与某些性能考虑或我错过的东西有关吗?或者是否完全可以使用weak而不是一直使用unowned?
奇怪的是,在Big Nerd Ranch iOS 5书(第73页)和编程iOS 5书(O'Reilly,第314页)(updadte:甚至Kochan的Objective-C第四版),在ARC的背景下,他们比如属性的默认属性是assign......但是Apple的文档说默认是strong.
我还尝试了一个简单的程序,如果我没有指定strong,程序工作正常,如果我指定strong,它的工作方式相同,而当assign使用时,编译器显示警告,所以看起来默认是确实如此strong.
因此,如果大多数时间,我们想要
@property (nonatomic, readwrite, strong) NSMutableArray *foo;
Run Code Online (Sandbox Code Playgroud)
然后我们就可以写了
@property (nonatomic) NSMutableArray *foo;
Run Code Online (Sandbox Code Playgroud)
因为其他两个(readwrite和strong)是默认的?
我经常碰到“线程安全”这两个关键术语,想知道这意味着什么。例如,在Firebase或Realm中,某些对象被视为“线程安全”。线程安全的东西到底意味着什么?
我已阅读如何在 Xcode Instruments 中演示内存泄漏和僵尸对象?但这是针对 Objective-c 的。这些步骤不适用。
通过阅读这里,我了解到僵尸是以下物体:
不太确定这与访问已释放的对象有何不同。
我的意思是在 Swift 中你可以这样做:
var person : Person? = Person(name: "John")
person = nil
print(person!.name)
Run Code Online (Sandbox Code Playgroud)
人员被解除分配了吗?是的!
我们是否试图指出这一点?是的!
那么有人可以分享导致创建悬空指针的最常见错误吗?