Objective c 子类化内存分配问题
我有一个关于用对象子类化类的基本问题: @接口Myclass:NSObject{ UIImage*图像; NSString*字符串; 粒子系统*系统; 对象*obj; Object2*obj2; } 如果我将这个MyClass类划分为子类,并且我只初始化在superclasses头中定义的其中一些对象,那么在内存方面,所有其他未分配的定义会发生什么情况? 我问的原因是,我有一个有很多很多定义的类,为了简单起见,我一直在对它进行子类化,但我的子类只需要这些定义的一小部分 是否值得将NSObject子类化并重新定义所需的变量,而不是将MyObject子类化 谢谢,Objective c 子类化内存分配问题,objective-c,cocos2d-iphone,objective-c++,Objective C,Cocos2d Iphone,Objective C++,我有一个关于用对象子类化类的基本问题: @接口Myclass:NSObject{ UIImage*图像; NSString*字符串; 粒子系统*系统; 对象*obj; Object2*obj2; } 如果我将这个MyClass类划分为子类,并且我只初始化在superclasses头中定义的其中一些对象,那么在内存方面,所有其他未分配的定义会发生什么情况? 我问的原因是,我有一个有很多很多定义的类,为了简单起见,我一直在对它进行子类化,但我的子类只需要这些定义的一小部分 是否值得将NSObject
Oliver.如果类定义中只有指针(例如,
SomeClassName*somePointerName;
),那么每个指针在每个对象中占据一个指针位置(iPhone上有4个字节)
虽然有时做您正在做的事情很方便,但您错过了面向对象编程的许多好处——您基本上只是在编写粗糙的C时利用了Objective-C的存储管理。如果您在类定义中只有指针(例如,
SomeClassName*somePointerName;
)然后每个指针在每个对象中占据一个指针位置(iPhone上为4字节)
虽然有时做你正在做的事情很方便,但你错过了面向对象编程的许多好处——你基本上只是在编写粗糙的C时利用Objective-C的存储管理。它们占用空间,但每个变量只值一个指针(iPhone上为4字节)
将这些划分为单独的类的更好的原因是,听起来你没有一个非常清晰的职责划分。一个类应该由一些数据逻辑分组和对该数据的操作组成。与类的角色无关的东西可能属于其他地方。它们占用空间,但每个变量只相当于一个指针(iPhone上为4字节)
将这些划分为单独的类的更好的原因是,听起来你没有一个非常清晰的职责划分。一个类应该由一些数据逻辑分组和对该数据的操作组成。与类的角色无关的东西可能属于其他地方。这些变量中的每一个都是指针,因此它们占用了指向内存地址所需的存储空间。(iPhone上有4个字节)
如果每个子类只需要一个小的子集,那么只包括基类中的子集(而不是复制和重新定义每个类中的子集)。如果其中一些子类需要完整的集合,那么您还可以拥有一个类层次结构(分层子类)。不看具体的设计就不可能知道。这些变量中的每一个都是指针,因此它们占用了指向内存地址所需的存储空间。(iPhone上有4个字节)
如果每个子类只需要一个小的子集,那么只包括基类中的子集(而不是复制和重新定义每个类中的子集)。如果其中一些子类需要完整的集合,那么您还可以拥有一个类层次结构(分层子类)。不看具体的设计是不可能知道的。我同意,我认为最合理的做法是从头开始构建类,基础是所有类中通用的对象,然后每个子类逐渐进入专业类。谢谢你,我需要重组!同意,我认为最合理的做法是从头开始构建类,基础是所有类中通用的对象,然后每个子类逐渐发展为专业类。谢谢你,我需要重组!