Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 子类化内存分配问题_Objective C_Cocos2d Iphone_Objective C++ - Fatal编程技术网

Objective c 子类化内存分配问题

Objective c 子类化内存分配问题,objective-c,cocos2d-iphone,objective-c++,Objective C,Cocos2d Iphone,Objective C++,我有一个关于用对象子类化类的基本问题: @接口Myclass:NSObject{ UIImage*图像; NSString*字符串; 粒子系统*系统; 对象*obj; Object2*obj2; } 如果我将这个MyClass类划分为子类,并且我只初始化在superclasses头中定义的其中一些对象,那么在内存方面,所有其他未分配的定义会发生什么情况? 我问的原因是,我有一个有很多很多定义的类,为了简单起见,我一直在对它进行子类化,但我的子类只需要这些定义的一小部分 是否值得将NSObject

我有一个关于用对象子类化类的基本问题:

@接口Myclass:NSObject{

UIImage*图像; NSString*字符串; 粒子系统*系统; 对象*obj; Object2*obj2; }

如果我将这个MyClass类划分为子类,并且我只初始化在superclasses头中定义的其中一些对象,那么在内存方面,所有其他未分配的定义会发生什么情况? 我问的原因是,我有一个有很多很多定义的类,为了简单起见,我一直在对它进行子类化,但我的子类只需要这些定义的一小部分

是否值得将NSObject子类化并重新定义所需的变量,而不是将MyObject子类化

谢谢,
Oliver.

如果类定义中只有指针(例如,
SomeClassName*somePointerName;
),那么每个指针在每个对象中占据一个指针位置(iPhone上有4个字节)


虽然有时做您正在做的事情很方便,但您错过了面向对象编程的许多好处——您基本上只是在编写粗糙的C时利用了Objective-C的存储管理。

如果您在类定义中只有指针(例如,
SomeClassName*somePointerName;
)然后每个指针在每个对象中占据一个指针位置(iPhone上为4字节)


虽然有时做你正在做的事情很方便,但你错过了面向对象编程的许多好处——你基本上只是在编写粗糙的C时利用Objective-C的存储管理。

它们占用空间,但每个变量只值一个指针(iPhone上为4字节)


将这些划分为单独的类的更好的原因是,听起来你没有一个非常清晰的职责划分。一个类应该由一些数据逻辑分组和对该数据的操作组成。与类的角色无关的东西可能属于其他地方。

它们占用空间,但每个变量只相当于一个指针(iPhone上为4字节)


将这些划分为单独的类的更好的原因是,听起来你没有一个非常清晰的职责划分。一个类应该由一些数据逻辑分组和对该数据的操作组成。与类的角色无关的东西可能属于其他地方。

这些变量中的每一个都是指针,因此它们占用了指向内存地址所需的存储空间。(iPhone上有4个字节)


如果每个子类只需要一个小的子集,那么只包括基类中的子集(而不是复制和重新定义每个类中的子集)。如果其中一些子类需要完整的集合,那么您还可以拥有一个类层次结构(分层子类)。不看具体的设计就不可能知道。这些变量中的每一个都是指针,因此它们占用了指向内存地址所需的存储空间。(iPhone上有4个字节)


如果每个子类只需要一个小的子集,那么只包括基类中的子集(而不是复制和重新定义每个类中的子集)。如果其中一些子类需要完整的集合,那么您还可以拥有一个类层次结构(分层子类)。不看具体的设计是不可能知道的。

我同意,我认为最合理的做法是从头开始构建类,基础是所有类中通用的对象,然后每个子类逐渐进入专业类。谢谢你,我需要重组!同意,我认为最合理的做法是从头开始构建类,基础是所有类中通用的对象,然后每个子类逐渐发展为专业类。谢谢你,我需要重组!