我目前正在使用许多与自定义方法相同的子类对象.创建我自己的库可以更方便,我可以用于几个项目.
我们的目标是有我自己的类是用同样的方法类,如可用UIView
,CGRect
等等都是,包括方便的方法一样CGRectMake
,都与类和结构.总结一下,我想创建自己的等价物:
类似的课程 UIView
结构如 CGRect
方便的功能,如 CGRectMake
将它作为库提供
将其作为XCode模板提供,因此,将这些自定义对象作为XCode中的"新文件"提供
所以基本上我正在寻找有关如何创建类,结构等的说明,以便创建上述所有内容.做这个的最好方式是什么?该320项目似乎是一个很好的起点.但它缺乏(我认为):
立即在新项目中提供图书馆
在"新文件"下提供新类
即使我要创建自己的静态库,我是否能够在应用程序商店中发布应用程序,因为手机不支持链接到第三方库?
为方便起见,这些基本上是子问题,涵盖了这个问题的范围:
如何为Mac/iPhone开发创建自己的库?
如何为此库创建类,结构和内联函数?
如何基于此库创建自己的Xcode模板?
我可以使用自己的静态库发布iPhone应用程序吗?
小智.. 18
FYI Xcode 3.2有一个名为Cocoa Touch Static Library的新项目模板.你可能想要走那条路.
FYI Xcode 3.2有一个名为Cocoa Touch Static Library的新项目模板.你可能想要走那条路.
如果你是为Mac做这个,你就要创建一个框架.但是,你提到UIView
,显然你正在使用iPhone.Apple不允许iPhone应用程序在运行时动态链接其他库,因此您唯一的选择是创建静态库.静态库在构建时链接到应用程序可执行文件中.
据我所知,Xcode中没有静态库项目模板.您可能需要做的是从另一个iPhone Xcode模板开始并添加静态库目标.继续使用默认的应用程序目标; 您可以使用它来构建一个简单的测试应用程序,以确保库实际工作.
要在应用程序中实际使用库,您需要两件事:编译库(它具有.a扩展名)和所有头文件.在完成的应用程序中,您将链接到静态库,并且您将需要#import
头文件,以便编译器了解可用的类,函数等.(一种常见的技术是创建一个导入所有其他文件的头文件.这样,您只需要在源文件中导入一个文件.)
至于创建自己的自定义模板,这里有一个简单的教程可以帮助您入门:http://www.macresearch.org/custom_xcode_templates您可以复制默认模板,并根据您的需要自定义它们.
struct语法如下所示:
typedef struct _MyPoint { CGFloat x; CGFloat y; } MyPoint;
结构是在头文件中声明的,因此您可以(我相信)Command + Double单击结构的名称以查看它是如何声明的.
创建结构的另一个小技巧是做这样的事情:
MyPoint aPoint = (MyPoint){ 1.5f, 0.25f };
因为编译器知道结构中字段的顺序,所以它可以非常容易地将您在花括号中提供的值与相应的字段进行匹配.当然,拥有类似函数更方便MyPointMake
,所以你可以像这样写:
MyPoint MyPointMake(CGFloat x, CGFloat y) return (MyPoint){ x, y }; }
请注意,这是一个函数,而不是一个方法,因此它存在于任何@interface
或@implementation
上下文之外.虽然我不认为编译器会抱怨你是否在@implementation
上下文中定义它.
CGPointMake
被定义为所谓的inline
函数.您也可以在Cocoa头文件中看到该定义.(内联函数和正常功能之间的区别是编译器可以取代呼叫到CGPointMake
一个复制的CGPointMake
,这避免了进行一个函数调用的开销.这是一个非常小的优化,但对于一个功能那么简单,它使感.)