假设有一个Superclass这个类的实例superclassObject.
我创建了一个派生的ClassA.
如何classAObject以这种方式实例化(初始化)派生类的对象,所有继承的字段都等于superclassObject?
当然,我可以循环遍历所有字段并手动复制值classAObject.property = [superclassObject.property copy].但是这种方法的问题在于我可能不知道(或无法访问)超类的所有ivars /属性.有更简单(更通用)的方式吗?
似乎我错过了一些非常基本的东西......
我正在尝试这样做,因为我得到了一个已经初始化的UIView(带框架,背景颜色,自动调整遮罩等),我想用我的自定义视图替换它具有相同的参数.
我发现了这个问题,那里的答案就是这么说的
通常不支持任何OO语言
然而
在Objective-C中,在某些情况下是可能的
好吧,如果它不支持,我该怎么办?如果是支持的,我怎么能做到这一点?
我似乎找到了解决这个一般问题的特殊情况的解决方案,我将在明天测试并报告.
然而,这引出了另一个想法:如果我使用NSCoder对其进行编码superclassObject(如果它<NSCoding>当然是实现的话),然后[[ClassA alloc] initWithCoder:coder]使用知道来自编码数据的编码器进行调用,该superclassObject怎么办?免责声明:嗯,我不熟悉编码概念(甚至根本不熟悉),所以可能最后一句话是胡说八道.
在开发应用程序时,我意识到我想要在应用程序"外部"测试我的视图控制器(以及其他对象).我发现了一篇关于测试视图控制器的好文章,但遗憾的是,我根本不熟悉任何类型的软件测试.因此,几乎所有写在那里的东西都有点令人困惑.我正在寻找一个好的起点,这是我的问题:
制作UIViewController子类的目的是UIResponder什么?仅仅是为了通过轮换活动吗?
我在文档中找不到任何明确的信息.
我知道,如果做了UIResponder某件事,那么这个东西应该被包含在响应者链和处理事件中.但我有两个疑惑.
UIViewController在它之后立即进入响应链view.为什么我们需要响应链中的视图控制器呢?它view已经存在,那么为什么我们不让视图处理其子视图未处理的事件?假设我有三个相同大小的数组.我必须对所有物体做点什么.如果我使用标准C数组,我会写类似的东西
for (i = 0; i < size; i++) {
doSomething(array1[i]); // or [[array1 objectAtIndex:i] doSomething];
doSomethingElse(array2[i]); // or [[array2 objectAtIndex:i] doSomethingElse];
doSomethingReallySpecial(array3[i]); // or [[array3 objectAtIndex:i] doSomethingReallySpecial];
}
Run Code Online (Sandbox Code Playgroud)
使用Objective C,我们有更多的方法来遍历NSArray中的对象:快速枚举,基于块的枚举和使用枚举器.我应该使用哪一个?为什么?有什么不同?
编辑
实际上这个问题可能是这样形成的:如果需要使用数组项的索引,应该使用哪个枚举?
ios ×2
objective-c ×2
arrays ×1
copy ×1
enumeration ×1
inheritance ×1
nsarray ×1
superclass ×1
uiresponder ×1
unit-testing ×1