Kri*_*iem 22 c oop xcode frameworks
我目前正在使用许多与自定义方法相同的子类对象.创建我自己的库可以更方便,我可以用于几个项目.
我们的目标是有我自己的类是用同样的方法类,如可用UIView,CGRect等等都是,包括方便的方法一样CGRectMake,都与类和结构.总结一下,我想创建自己的等价物:
UIView CGRectCGRectMake所以基本上我正在寻找有关如何创建类,结构等的说明,以便创建上述所有内容.做这个的最好方式是什么?该320项目似乎是一个很好的起点.但它缺乏(我认为):
即使我要创建自己的静态库,我是否能够在应用程序商店中发布应用程序,因为手机不支持链接到第三方库?
为方便起见,这些基本上是子问题,涵盖了这个问题的范围:
Ale*_*lex 16
如果你是为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;
Run Code Online (Sandbox Code Playgroud)
结构是在头文件中声明的,因此您可以(我相信)Command + Double单击结构的名称以查看它是如何声明的.
创建结构的另一个小技巧是做这样的事情:
MyPoint aPoint = (MyPoint){ 1.5f, 0.25f };
Run Code Online (Sandbox Code Playgroud)
因为编译器知道结构中字段的顺序,所以它可以非常容易地将您在花括号中提供的值与相应的字段进行匹配.当然,拥有类似函数更方便MyPointMake,所以你可以像这样写:
MyPoint MyPointMake(CGFloat x, CGFloat y)
return (MyPoint){ x, y };
}
Run Code Online (Sandbox Code Playgroud)
请注意,这是一个函数,而不是一个方法,因此它存在于任何@interface或@implementation上下文之外.虽然我不认为编译器会抱怨你是否在@implementation上下文中定义它.
CGPointMake被定义为所谓的inline函数.您也可以在Cocoa头文件中看到该定义.(内联函数和正常功能之间的区别是编译器可以取代呼叫到CGPointMake一个复制的CGPointMake,这避免了进行一个函数调用的开销.这是一个非常小的优化,但对于一个功能那么简单,它使感.)