我有一些项目是我在不久前在Xcode 3.2.x下开始的.我几天前切换到Xcode 4,并希望将Workspace功能用作两个项目.基本上,我的计划是从两个项目中提取一些共同特征,并使它们成为两个项目所依赖的公共库.但是,在我遇到棘手的依赖关系之前,我只是将我的两个项目添加到工作区.
我尝试创建一个新工作区并从上下文菜单中选择"添加文件到"; 然后我从我的第一个项目中选择.xcodeproj文件,它出现在我工作区的左侧树浏览器中.但是,它只是文件,而不是我得到的项目.也就是说,不是在树形浏览器中获得两行条目,其中第一行表示项目名称,第二行表示像"1 target,iOS SDK 4.3"之类的内容,就像在Apple文档中那样,我只得到一行声明包含扩展名的.xcodeproj文件的名称.左侧没有三角形来展开节点.这就像我只是在工作区中拖动了一些文件,而不是项目.第二个项目也是如此.
我还在Xcode 4中从头开始创建了一个新的项目"Foo",并将其添加到我的工作区,结果相同.我查看了Apple文档,现在观看了16秒的视频,但是无法弄清楚我做错了什么(如果问题确实存在于主席而不是计算机中).
我知道,这已被问过几次,但主要是针对Xcode 3.x. 对于iPad,我有两个项目都住在一个共同的工作区
前者取决于后者.我似乎无法弄清楚如何添加该依赖项.在文档中没有很好地解释,所以我尝试了以下内容:
我也尝试将.a文件拖放到该部分,但收效甚微.此外,文档说明
如果工作空间中一个项目的构建产品依赖于工作空间中另一个项目的构建产品(例如,如果一个项目构建另一个项目使用的库),Xcode会发现这样的隐式依赖关系并以正确的顺序构建.
我想知道Xcode如何发现这些依赖项.Apple是否说我根本不需要添加这个目标依赖项?但那么Xcode如何发现一个人正在使用另一个?
最后但同样重要的是,我需要将Foolib的.h文件以某种方式传递给Foo.建议的方法是什么?显然,我不想只是复制它们.对于框架,头文件包含在内,但人们在处理它们自己并行开发的静态库时通常会做些什么.
向正确的方向轻推将非常感激.谢谢.
我有一个Xcode工作区,有几个项目,比如说Foo和Baz,它们都依赖于一些常见代码,这些代码恰好是RCSwitch切换按钮代码(如果有人有兴趣可以在这里找到).RCSwitch附带了一些需要在Foo或Baz运行时加载的图像文件.它们使用UIImage imageNamed:消息加载,就像这样
UIImage *knobTmpImage = [[[UIImage imageNamed:@"btn_slider_thumb.png"] retain] autorelease];
Run Code Online (Sandbox Code Playgroud)
我的理解是,为了工作,图像需要成为应用程序包的一部分.我的问题是如何从我的图书馆中获取它们?我已经尝试将"Copy Bundle Resources"构建阶段添加到我的库项目中,然后将所有图像添加到该项目中而没有任何效果.在运行时无法找到图像.
然后我尝试将图像添加到Foo和Baz自己的"Copy Bundle Resources"构建阶段; 必须选择"添加其他",因为即将到来的对话框不会列出当前项目之外的任何资源.这实际上是有效的,但它似乎是一种奇怪的方式.Foo和Baz都不应该了解图书馆的内部.如果我想将库发送给外部客户怎么办?
还有另一种方法吗?是否可以在libXXX.a文件中包含图像或其他资源?
我想我需要一些帮助,在Java中使用反射在另一个类中查找枚举类.我一直在和这个争斗太久了.我已经阅读了这个以及其他一些帖子,他们都让我相信它应该如下工作.
public class ModelActivity {
public enum AttributeEnumeration { MODELID, MODELURGENCY, MODELDUEDATEANDTIME }
public static void main(String[] args) {
// Find the class with the given name
String className = "ModelActivity";
Class modelClass = null;
try {
// Retrieve the Class with the given className...
modelClass = Class.forName(className);
} catch (ClassNotFoundException e) {
throw new RuntimeException("Class by name '" + className + "' not found.", e);
}
// Find the AttributeEnumeration within the class
String attributeEnumerationClassName = className + ".AttributeEnumeration"; …Run Code Online (Sandbox Code Playgroud) 我已经阅读了我认为是Quartz 2D Programming Guide的相关部分,但无法找到以下答案(他们似乎没有在文档中谈论iOS):
我的应用程序在a中显示绘图UIView.我不得不以某种方式更新绘图,例如更改其中一个形状的填充颜色(我保留CGPathRefs重要的形状,以便以后可以用不同的填充颜色重绘它们).如上述文档第169页的"使用CGLayer绘图"一节中所述,我正在考虑将整个绘图绘制成CGContext我将从中获取的绘图CGLayer,如下所示:
CGContextRef offscreenContext = CGLayerGetContext(offscreenLayer);
Run Code Online (Sandbox Code Playgroud)
然后我可以在屏幕上更新屏幕CGContext并CGLayer在UIViewdrawRect:方法中绘制到我的UIView中,如下所示:
CGContextDrawLayerAtPoint(viewContext, CGPointZero, offscreenLayer);
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,我CGLayer从哪里得到我的?我的理解是我必须使用它CGLayerCreateWithContext并提供CGContext一个参数,从中继承它的大部分属性.显然,正确的背景将是UIView我所接受的背景
CGContextRef viewContext = UIGraphicsGetCurrentContext();
Run Code Online (Sandbox Code Playgroud)
但是如果我没有弄错的话,我只能在drawRect:方法中得到它,并且假设下次调用该方法时我给出的上下文将是相同的一个是无效的,即我只能在CGContext本地使用它方法.
那么,我怎样才能得到一个CGContext我可以用来初始化我CGLayer创建一个屏幕CGContext来绘制然后将整个图层绘制回我UIView的CGContext?
PS:当你在它的时候; 如果上面的任何内容没有意义或没有理智,请告诉我.我刚刚开始关注Quartz 2D.
我在XCode中得到了上面的编译器错误,我无法弄清楚发生了什么.
#import <UIKit/UIKit.h>
// #import "HeaderPanelViewController.h"
#import "HTTPClientCommunicator.h"
#import "WebSocket.h"
@class HeaderPanelViewController;
@protocol ServerDateTimeUpdating
-(void)serverDateTimeHasBeenUpdatedWithDate:(NSString *) dateString andTime:(NSString *) timeString;
@end
@interface SmartWardPTAppDelegate : NSObject <UIApplicationDelegate, WebSocketDelegate> {
}
@property (nonatomic, retain) id<ServerDateTimeUpdating> *serverDateTimeDelegate;
....
@end
Run Code Online (Sandbox Code Playgroud)
然后在这一行
@synthesize serverDateTimeDelegate;
Run Code Online (Sandbox Code Playgroud)
在ApplicationDelegate.m中我收到错误"从不兼容的指针类型传递'obj_setProperty'的参数4".我做了一些研究,发现'retain'只适用于类类型,这是公平的.如果我实际上删除了行中的"保留"
@property (nonatomic, retain) id<ServerDateTimeUpdating> *serverDateTimeDelegate;
Run Code Online (Sandbox Code Playgroud)
它没有投诉就编译.但是,我认为,这是错误的做法.当然我的'id' 是类类型,当然它应该保留在setter中.顺便说一句,这是我的HeaderPanelViewController的声明,它实现了上述协议:
@interface HeaderPanelViewController : UIViewController<ServerDateTimeUpdating> {
}
...
@end
Run Code Online (Sandbox Code Playgroud)
另外,如果我真的做删除保留后,我得到一个问题走下赛场时,我实际调用的setter注册我的HeaderPanelViewController为代表:
// Register this instance as the delegate for ServerDateTimeUpdating
// Retrieve the ApplicationDelegate...
ApplicationDelegate *applicationDelegate = (ApplicationDelegate *) [UIApplication …Run Code Online (Sandbox Code Playgroud)