Tag: objective c

Objective-C协议前向声明

ObjectProperties.h @protocol ObjectProperties <NSObject> @property (strong, nonatomic) NSString *name; @property (strong, nonatomic) NSDate *date; @property (assign, nonatomic) int64_t index; @end ClassA.h #import <Foundation/Foundation.h> @protocol ObjectProperties; @interface ClassA : NSObject <ObjectProperties> – (void)specialSauce; @end; ManagedClassA.h #import <CoreData/CoreData.h> @protocol ObjectProperties; @interface ManagedClassA : NSManagedObject <ObjectProperties> – (void)doSomething; @end; 从上面的代码示例中,我已经定义了一个.h文件中的协议,以便与Core Data对象以及普通的ol香草对象一起使用。 看起来像“噪音”有符合类#import协议在他们的头; 如前所述,在执行文件中转发声明协议和导入会更干净。 但是,Xcode在执行此操作时会引发警告: Cannot find protocol definition […]

无法在Interface Builder(Xcode 5)中创build子视图的sockets连接

我知道这似乎是其他一些问题的重复,但答案不适合我。 我创build了一个单一的视图应用程序。 在故事板中,我在主视图中添加了一个子视图。 我在我的主视图上有一个标签,在我的子视图上有另一个标签。 我创build了一个UIViewtypes的类,并将其添加为子视图的自定义类。 我可以ctrl-drag我的标签在我的主视图到主视图控制器类。 但是,当我尝试按Ctrl-拖动我的标签在我的子视图到我的自定义类,我无法获得连接发生。 我甚至input了属性信息,并尝试手动build立连接无济于事。 Xcode界面生成器的最新版本已经发生了一些变化。 有人能告诉我我错过了什么吗? 这里几乎没有代码。 我只是testing试图连接sockets与自定义类的子视图。 第一个图像显示我已经设置了自定义类并添加了一个属性,但是我无法build立连接。 第二张图显示主视图标签连接在主视图的控制器中。 第三张图片显示子视图标签没有出口连接。

获取当前date和时间

我系统的date时间是5月26日22:55但是当我与[NSDate date]date时间是5月27日02:35 是因为时区吗? 如果是的话,如何解决这个问题,当我得到date的时间,给我我的系统的date,不检查时区

交换NSMutableArray中的元素

有没有什么特殊的方法可以使一个NSMutableArray中的元素更容易或更直接?

在debugging模式下启用和禁用NSLog

我想在debugging时启用NSLog,否则禁用它。 一个非常简单的事情是: #ifdef DEBUG NSLog(@"My log"); #endif 但是,所有这#ifdef和#endif是borring … :(所以我尝试其他的东西:( .pch是放好它的好地方) #ifdef DEBUG # define NSLog(text) NSLog(text); #else # define NSLog(text) #endif 这项工作非常好(不recursion)。 但问题是,NSLog有无限的参数。 void NSLog(NSString *format, …) 我如何解决这个工作在预处理器模式? – 编辑 – 这段代码使你的NSLog更好: #ifdef DEBUG #define NSLog(FORMAT, …) fprintf(stderr,"%s\n", [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]); #else #define NSLog(…) #endif

绘制平滑的曲线 – 需要的方法

如何在移动时在iOS绘图应用程序中平滑一组点? 我试过UIBezierpaths,但我得到的是交错的锯齿端,当我只是移动点1,2,3,4 – 2,3,4,5。 我听说了样条曲线和所有其他types。 我对iPhone编程颇为陌生,不明白如何在我的石英绘图应用程序中进行编程。 一个可靠的例子将不胜感激,我已经花了几个星期运行在圈子里,我永远也找不到任何iOS代码的任务。 大多数post只是链接到一个java模拟或维基百科关于曲线拟合的页面,这对我什么都不做。 另外我不想切换到OpenGL ES。 我希望有人能最终提供代码来回答这个循环的问题。 这是我在UIBezierPath的交叉点的代码/// 更新了下面的答案 #define VALUE(_INDEX_) [NSValue valueWithCGPoint:points[_INDEX_]] #define POINT(_INDEX_) [(NSValue *)[points objectAtIndex:_INDEX_] CGPointValue] – (UIBezierPath*)smoothedPathWithGranularity:(NSInteger)granularity { NSMutableArray *points = [(NSMutableArray*)[self pointsOrdered] mutableCopy]; if (points.count < 4) return [self bezierPath]; // Add control points to make the math make sense [points insertObject:[points objectAtIndex:0] atIndex:0]; [points addObject:[points […]

iOS 8 requestWhenInUseAuthorization没有popup

我试图让我的AppProject iOS 8准备就绪。 我读了很多 [_locationManager requestWhenInUseAuthorization]; 和plist中的入口 NSLocationWhenInUseUsageDescription 所以我改变了所有必要的代码行。 它工作正常,但现在我已经从我的iOS 7基地再次复制我的项目,包括新function。 但是,当我对iOS8位置隐私进行更改时,Popup不再显示。 我的代码工作,直到我复制。 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>NSLocationWhenInUseUsageDescription</key> <string>tolle sache </string> <key>CFBundleDevelopmentRegion</key> <string>en</string> <key>CFBundleExecutable</key> <string>${EXECUTABLE_NAME}</string> <key>CFBundleIdentifier</key> <string>fapporite.${PRODUCT_NAME:rfc1034identifier}</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundlePackageType</key> <string>BNDL</string> <key>CFBundleShortVersionString</key> <string>1.0</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> <string>1</string> </dict> </plist> 这是我的电话 – (instancetype)initWithCoder:(NSCoder *)coder { self = […]

如何以编程方式移动UIScrollView以在键盘上方的控件中进行对焦?

我在我的UIScrollView上有6个UITextFields 。 现在,我可以通过用户请求滚动。 但是,当键盘出现时,一些文本字段被隐藏。 这不是用户友好的。 如何以编程方式滚动视图,所以我确定键盘不隐藏文本框?

如何以编程方式调用View Controller?

我已经看过了我能find的所有教程,但我仍然没有答案。 我需要从代码调用另一个视图。 我正在使用UIStoryboards 。 我已经通过从UIButtons拖拽来多次改变视图,但是现在它必须来自代码。 我试图从主菜单调用信息页,如果这是用户第一次打开应用程序。 但是,我似乎无法find从代码中更改视图的方法。 我的所有视图都由相同的文件( ViewController2 )控制。 我的主菜单的identifier是ViewControllerMain ,信息页面的identifier是ViewControllerInfo 。 首先我试过这个: [ViewControllerMain presentViewController: ViewControllerInfo animated:YES completion: NULL]; 然后我试着为每个UIViewControllers做不同的UIViewControllers ,并说: [ViewController2 presentViewController: ViewController animated:YES completion: NULL]; 都没有工作。 对于第一个,它说: 使用未声明的标识符ViewControllerMain。 在第二个,它说: 意外的接口名称“ViewController”:预期的标识符。 我能做什么?

将NSData字节转换为NSString?

我正在尝试使用BEncoding ObjC类来解码.torrent文件。 NSData *rawdata = [NSData dataWithContentsOfFile:@"/path/to/the.torrent"]; NSData *torrent = [BEncoding objectFromEncodedData:rawdata]; 当我NSLog torrent我得到以下内容: { announce = <68747470 3a2f2f74 6f727265 6e742e75 62756e74 752e636f 6d3a3639 36392f61 6e6e6f75 6e6365>; comment = <5562756e 74752043 44207265 6c656173 65732e75 62756e74 752e636f 6d>; "creation date" = 1225365524; info = { length = 732766208; name = <7562756e 74752d38 2e31302d 6465736b 746f702d 69333836 […]