Questions tagged «objective-c»

仅在有关Objective-C功能或取决于语言代码的问题上使用此标记。标签[cocoa]和[cocoa-touch]应该用于询问Apple的框架或类。使用相关标签[ios],[macos],[apple-watch]和[tvos]来解决特定于这些平台的问题。

3
生成启用了ARC的UUID字符串
我需要在启用了ARC的某些代码中生成UUID字符串。 经过研究,这是我想出的: CFUUIDRef uuid = CFUUIDCreate(NULL); NSString *uuidStr = (__bridge_transfer NSString *)CFUUIDCreateString(NULL, uuid); CFRelease(uuid); 我是否正确使用__bridge_transfer以避免泄漏ARC下的任何对象?

5
如何使用Swift中的Objective-C #define
我正在迁移UIViewController课程,以便对Swift进行一些培训。我通过桥接头成功地使用了Objective-C代码,但是我需要导入一个包含#define指令的常量文件。 我在结合Swift和Cocoa和Objective-C(简单宏)中看到以下内容: 简单宏 通常#define在C和Objective-C中使用指令定义原始常量的地方,在Swift中使用全局常量代替。例如,常量定义#define FADE_ANIMATION_DURATION 0.35可以在Swift中使用更好地表达let FADE_ANIMATION_DURATION = 0.35。因为简单的类似于常量的宏直接映射到Swift全局变量,所以编译器会自动导入C和Objective-C源文件中定义的简单宏。 因此,似乎有可能。我已经将包含常量的文件导入到桥接头文件中,但是我的.swift文件没有可见性,无法解决。 我应该怎么做才能使我的常量对Swift可见? 更新: 似乎可以使用NSString常量,但不能使用布尔值: #define kSTRING_CONSTANT @"a_string_constant" // resolved from swift #define kBOOL_CONSTANT YES // unresolved from swift

17
UIButton在iOS7中点击时不显示突出显示
我看过很多关于类似问题的文章,但没有一个完全符合或解决此问题。从iOS 7开始,每当我UIButton在UITableViewCell或什至于footerview中添加a时,它都可以“正常”运行,这意味着它会收到目标操作,但不会显示通常在您点击a时出现的小亮点UIButton。它使UI看起来很时髦,没有显示按钮对触摸的反应。 我很确定这算是iOS7中的错误,但是有没有人找到解决方案或可以帮助我找到一个解决方案:) 编辑:我忘了提到,如果我长按该按钮,它将突出显示,但是不能像添加到标准视图中那样快速点击。 码: 创建按钮: UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; button.titleLabel.font = [UIFont systemFontOfSize:14]; button.titleLabel.textColor = [UIColor blueColor]; [button setTitle:@"Testing" forState:UIControlStateNormal]; [button addTarget:self action:@selector(buttonPressed:) forControlEvents: UIControlEventTouchDown]; button.frame = CGRectMake(0, 0, self.view.frame.size.width/2, 40); 我测试过的东西: //删除手势识别器UITableView,以防它们妨碍您的操作。 for (UIGestureRecognizer *recognizer in self.tableView.gestureRecognizers) { recognizer.enabled = NO; } //从单元格中删除手势 for (UIGestureRecognizer *recognizer in …

6
在Objective-C中向前声明枚举
我在Objective-C程序中的枚举可见性遇到麻烦。我有两个头文件,一个头文件定义了一个typedef enum。另一个文件需要使用typedef'd类型。 在直接C语言中,我将只是#include另一个头文件,但是在Objective-C中,建议不要#import在头文件之间使用,而是@class根据需要使用前向声明。但是,我不知道如何前向声明枚举类型。 我不需要实际的枚举值,除了在相应的.m实现文件中,可以放心使用#import。那么,如何typedef enum在标头中识别它?

5
每次运行后,Xcode 6都会在iOS8模拟器中重命名我的应用程序目录。
我正在运行Xcode 6 Beta 5,但是自从第一个Beta版以来,这种情况一直在发生。每次运行后,模拟器中我应用程序的目录都会不断重命名。我花了一段时间才弄清楚这一点。我正在使用它来获取文档的目录参考。 NSString *folder = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; NSLog(@"Documents Dir: %@",folder); 现在以第一次运行为例: /用户/乔伊/库/开发人员/ CoreSimulator /设备/ 5B9930EE-A9B4-4B36-BABB-AA864ACAF2DE /数据/容器/数据/应用/ 4B10C2E4-A5C3-4C64-93B1-4069FCCB9C46 /文档 现在第二次运行是: /用户/乔伊/库/开发人员/ CoreSimulator /设备/ 5B9930EE-A9B4-4B36-BABB-AA864ACAF2DE /数据/容器/数据/应用/ 7E9EB62D-115A-4092-AD23-CB6BA3E5E10F /文档 第三轮: /用户/乔伊/库/开发人员/ CoreSimulator /设备/ 5B9930EE-A9B4-4B36-BABB-AA864ACAF2DE /数据/容器/数据/应用程序/ EC8F41E8-52ED-4B10-9808-B3ACC46FC6AA /文档 这对我的应用造成了严重破坏,因为它在应用中存储了某些文件的路径引用。不是我的NSLog语句返回错误的结果,而是我验证了这是在Finder中发生的情况。每次都在更改名称。有人见过这种情况吗?这是我误会的“特征”吗?


8
检测iOS UIDevice方向
我需要检测设备何时处于纵向方向,以便可以触发特殊的动画。但是我不希望我的观点自动旋转。 当设备旋转到纵向时,如何覆盖自动旋转的视图?我的应用程序仅需要以横向显示视图,但是如果我想能够检测到纵向旋转,似乎还需要支持纵向。


7
NSFetchedResultsController,其部分由字符串的第一个字母创建
在iPhone上学习核心数据。关于核心数据,用部分填充表格视图的例子似乎很少。该CoreDataBooks示例使用节,但他们是从模型中的满弦产生。我想按姓氏的第一个字母(例如“地址簿”)将“核心数据”表分为几部分。 我可以为每个人创建另一个属性(即一个字母),以充当部门的划分,但这似乎很繁琐。 这就是我要开始的东西...这个把戏似乎在欺骗sectionNameKeyPath: - (NSFetchedResultsController *)fetchedResultsController { //.........SOME STUFF DELETED // Edit the sort key as appropriate. NSSortDescriptor *orderDescriptor = [[NSSortDescriptor alloc] initWithKey:@"personName" ascending:YES]; NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:orderDescriptor, nil]; [fetchRequest setSortDescriptors:sortDescriptors]; // Edit the section name key path and cache name if appropriate. // nil for section name …


16
从NSUserDefaults字典iOS中删除所有密钥
我使用NSUserDefaults字典来存储基本信息,例如高分等,以便在用户关闭应用程序时不会丢失数据。无论如何,我使用: NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 存储数据。例如,如果我想存储新的高分,那么我应该这样做: [prefs setInteger:1023 forKey:@"highScore"]; [prefs synchronize]; //this is needed in case the app is closed. 然后,如果我想检索高分,我会做: [prefs integerForKey:@"highScore"]; 反正问题是,我储存很多其他的事情,因为NSUserDefaults enable你到店里booleans,integers,objects等我有什么方法来执行删除所有键,以便成为NSUserDefaults的像拳头时我启动应用程序? 我正在寻找类似的东西: NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; [prefs deleteAllKeysAndObjectsInTheDictionary]; 或者也许有一种获取所有键的方法,我必须遍历每个对象,但是我不知道如何删除它们。 编辑: 我试过了 : NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; [NSUserDefaults resetStandardUserDefaults]; [prefs synchronize]; 而且我仍然能够获得高分。

2
UIButton事件。有什么不同?
我遇到了一个问题,当我的按钮显示弹出菜单时,该按钮应保持“按下”状态。弹出框是某些过滤器的选择器,过滤器显示在按钮本身上。当我点击它并显示弹出窗口时,无论如何它都会被取消选择。 我认为我必须重新定义它在触摸事件上的行为,并使其不响应标准touch up inside。然后我想知道其他事件还负责什么?但是我在iOS库中找不到事件列表,而在StackOverflow中只是关于touch up inside或错误行为的问题touch down。 那么触摸事件之间有什么区别? 触摸取消-当您触摸按钮但将手指移开而仍未选择时? 着陆-轻按即可。 着陆重复?? 触摸拖动输入?? 触摸拖动出口? 触摸内部拖动 触摸拖动到外面 在内部进行修饰-点击并释放在其边界内的按钮时。它将UIButtons状态更改为“正常”。 在外面修饰-当您点击并释放按钮时,是否会触碰到边界? 其他IBAction不是由UIButton发送的,对不对?这些事件又如何改变UIButton的外观?喜欢highlighted还是selected? 我很高兴找到关于IBAction的好文章的链接,因为我找不到它。


2
didSelectRowAtIndexPath返回错误的IndexPath
我遇到了一个非常令人困惑的错误。我的UITableView的第一行返回1,第二行返回0indexPath中!这怎么可能呢? 在我的`-(void)viewDidLoad`中,一切仍然很好。我正在成功突出显示第一行 currentRow = 0; [tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:currentRow inSection:0] animated:NO scrollPosition:UITableViewScrollPositionNone]; 我有currentRow用于跟踪选择哪一行的变量(另一控件会根据当前选择的哪一行而更改)。 现在在我的`didDeselectRowAtIndexPath`委托函数中,我有: -(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath { ... NSLog(@"IndexPath: %@", [indexPath description]); } 日志显示以下内容: IndexPath: <NSIndexPath 0x79509d0> 2 indexes [0, 0]当我触摸第二行时,以及 IndexPath: <NSIndexPath 0x79509d0> 2 indexes [0, 1]当我触摸第一行时。 没有行插入,删除或排序等,甚至没有滚动。这是一个简单的UITableView,具有分组样式,具有1个部分和3行。是什么原因造成的? 谢谢你的帮助, S

3
实现采用块作为回调的方法
我想写一个类似这样的方法: +(void)myMethodWithView:(UIView *)exampleView completion:(void (^)(BOOL finished))completion; 我基本上已经从Apple的一种类方法中删除了以下语法UIView: + (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion; 并希望它像这样使用: [myFoo myMethodWithView:self.view completion:^(BOOL finished){ NSLog(@"call back success"); }]; 我的问题是我该如何实施?如果有人可以指出正确的文档,那将是很好的,并且非常感谢一个非常基本的示例(或者在Stack Overflow上有类似的答案-我找不到)。对于委托人,我还是不太了解,以确定这是否是正确的方法! 我已经在实现文件中给出了一个我期望的粗略示例,但是由于我找不到信息,所以猜测是可行的。 + (void)myMethod:(UIView *)exampleView completion:(void (^)(BOOL finished))completion { // do stuff if (completion) { // what sort of syntax goes here? If I've …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.