小编S.J*_*S.J的帖子

Objective-c中的"测试类平等"

我在理解苹果指南中定义的"测试类平等"的这一部分时遇到了问题.

在动态创建的子类中,通常会重写类方法,以便子类伪装成它所替换的类.因此,在测试类相等性时,应该比较类方法返回的值而不是低级函数返回的值.就API而言,以下不等式适用于动态子类:

[object class] != object_getClass(object) != *((Class*)object)
Run Code Online (Sandbox Code Playgroud)

因此,您应该测试两个类的相等性,如下所示:

if ([objectA class] == [objectB class]) { //...
Run Code Online (Sandbox Code Playgroud)

iphone objective-c ios

29
推荐指数
1
解决办法
8469
查看次数

委派给多个对象

有没有办法在Objective-C中一次委托两个对象?我知道委托模式一次意味着一个响应,并且对于多个听众和广播有通知中心但通知不会返回任何值.

如果我有一个基于网络的大量iOS项目并且需要委托给多个侦听器并且需要从它们返回值,那么在这种情况下哪种方法应该是最好的?

objective-c

28
推荐指数
2
解决办法
2万
查看次数

可转换数据和二进制数据之间有什么区别

我最近开始研究核心数据,请任何人告诉我最新的可转换数据和二进制数据之间的区别.我需要将myClassObject存储在核心数据中.我创建了属性并将其类型定义为二进制数据,但在存储时我收到错误.

core-data objective-c ios

15
推荐指数
1
解决办法
5229
查看次数

UIMenuController方法setTargetRect:inView:在UITableView中不起作用

我显示自定义UIMenuController在我tableview这样的

在此输入图像描述

但问题是它在中心显示我想要显示在其上面的label是橙色.为了在label我之上显示,[menu setTargetRect:CGRectMake(10, 10, 0, 0) inView:self.lbl];下面是整个代码.

但是,如果我显示UIMenuController没有UITableView setTargetRect工作正常.

为什么setTargetRect不合作UITableView

setTargetRect Doc说:

(a)此目标矩形(targetRect)通常是选区的边界矩形.UIMenuController将编辑菜单定位在此矩形上方; 如果那里没有足够的空间用于菜单,则将其定位在矩形下方.菜单指针根据需要放置在目标矩形的顶部或底部的中心.

(b)请注意,如果将目标矩形的宽度或高度设置为零,则UIMenuController会将目标区域视为用于定位的线或点(例如,插入插入符或单个点).

(c)设置后,目标矩形不跟踪视图; 如果视图移动(例如在滚动视图中发生),则必须相应地更新目标矩形.

我错过了什么?

MyViewController

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 5;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    TheCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cid" forIndexPath:indexPath];

    cell.lbl.text = [NSString stringWithFormat:@"%ld", (long)indexPath.row];

    return cell;
}

- (BOOL)tableView:(UITableView *)tableView shouldShowMenuForRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

-(BOOL)tableView:(UITableView *)tableView canPerformAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender { …
Run Code Online (Sandbox Code Playgroud)

objective-c uitableview uimenucontroller ios

11
推荐指数
1
解决办法
4532
查看次数

如何在iOS 10 UserNotifications上设置NSCalendarUnitMinute repeatInterval?

在UILocalNotification我们使用NSCalendarUnitMinute像重复.....但我在iOS 10 UserNotification doc中找不到...我怎样才能NSCalendarUnitMinute在iOS 10中使用类似的重复UserNotification

这是代码,它将在晚上8:30安排本地通知,并在每一分钟后重复.

UILocalNotification* localNotification = [[UILocalNotification alloc] init];
localNotification.fireDate = pickerDate;
localNotification.alertBody = self.textField.text;
localNotification.timeZone = [NSTimeZone defaultTimeZone];
localNotification.repeatInterval = NSCalendarUnitMinute;
localNotification.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber] + 1;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
Run Code Online (Sandbox Code Playgroud)

objective-c ios swift ios10 unnotificationrequest

9
推荐指数
1
解决办法
4244
查看次数

如何在用户通知中设置重复频率

直到iOS 9我们写local notifications这样的

UILocalNotification* localNotification = [[UILocalNotification alloc] init];
localNotification.fireDate = pickerDate;
localNotification.alertBody = self.textField.text;
localNotification.timeZone = [NSTimeZone defaultTimeZone];
localNotification.repeatInterval = NSCalendarUnitMinute;
localNotification.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber] + 1;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
Run Code Online (Sandbox Code Playgroud)

我们在本地通知中repeatInterval,现在在WWDC2016Apple宣布User Notification其中包含

  • UNTimeIntervalNotificationTrigger.
  • UNCalendarNotificationTrigger.

    UNTimeIntervalNotificationTrigger* trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:60 repeats:YES];
    
    Run Code Online (Sandbox Code Playgroud)

上面的代码会在每分钟后触发通知.但无法设定日期.

NSDateComponents* date = [[NSDateComponents alloc] init];
date.hour = 8;
date.minute = 30;

UNCalendarNotificationTrigger* triggerC = [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:date repeats:YES];
Run Code Online (Sandbox Code Playgroud)

上面的代码可以设置,重复将在明天8:30触发,而不是在分钟后.

在iOS 10中User Notification我如何设置重复频率的日期时间就像我们可以设置的一样UILocalNotification

我希望 …

objective-c nsdate nsdatecomponents ios uilocalnotification

9
推荐指数
1
解决办法
3861
查看次数

需要帮助设置两个相等宽度的按钮,并排Autolayout

使用自动布局我试图在底部创建两个按钮,就像这样

在此输入图像描述

拖动两个按钮后,我设置了这样的约束

在此输入图像描述

Back button我设置Leading Space to Container MarginBottom Space to Bottom Layout Guide

Go To Settings button我设置Trailing Space to Container MarginBottom Space to Bottom Layout Guide

然后,我ctrl+DragBack buttonGo To Settings button并设置Equal Widths约束,我得到这个.

在此输入图像描述

然后我更新Back button宽度相同Go To Settings button,其是101与所有约束变成蓝色.

但我希望无论屏幕大小如何,两个按钮都能覆盖屏幕的一半,与第一个屏幕截图所示相同,如何完成此操作?

xcode objective-c ios autolayout

7
推荐指数
1
解决办法
2515
查看次数

试图了解TranslationInView

在我的UITableViewCell子类中,我添加了一个平移手势,并且在gestureRecognizerShouldBegin我检查的方法中self.frame.origin.x,self.frame.origin.y两者都是0.000000 and 0.000000在应用后TranslationInView CGPoint translation = [gestureRecognizer translationInView:[self superview]];我得到了x=-4.000000 and y=0.000000

TranslationInView当我得到正确的单元格0.0和0.0的位置,因为第一个单元格将具有0.0和0.0,为什么我需要时,如何工作,我试图绕过它TranslationInView.

objective-c uitableview ios uipangesturerecognizer

6
推荐指数
1
解决办法
3574
查看次数

需要有关Objective-c属性概念的帮助

我正在阅读Apple Doc以了解属性实例变量但有点困惑

来自Apple Doc:

大多数属性由实例变量支持默认情况下,readwrite属性将由实例变量支持,该实例变量将再次由编译器自动合成.

实例变量是一个存在的变量,它保存对象生命周期的值.用于实例变量的内存在首次创建对象时(通过alloc)分配,并在释放对象时释放.

除非另行指定,否则合成的实例变量与属性具有相同的名称,但带有下划线前缀.例如,对于名为firstName的属性,合成的实例变量将被称为_firstName.

尽管对象使用访问器方法或点语法访问自己的属性是最佳做法,但可以直接从类实现中的任何实例方法访问实例变量.下划线前缀清楚地表明您正在访问实例变量而不是例如本地变量:

如果使用访问器方法或点语法是最佳实践那么为什么用户_ivarPropertyName?

为什么要使用ivar来展示属性?它的好处是什么?当苹果说"使用存取方法或点语法是最佳实践"时

objective-c ios

5
推荐指数
1
解决办法
980
查看次数

可以[self.window makeKeyAndVisible]; 在设置rootviewcontroller之前调用

我的要求是UITabBarController是rootviewcontroller,并且在第一次启动应用程序时,我想要显示UINavCon内部的登录过程,我正在显示它presentViewController.

我不希望第一次看到UITabBarController并且不想如何登录UINavCon作为模态弹出.

我想让用户体验如果应用程序第一次启动登录UINavCon应该是可见的.所以这是我的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

[self.window makeKeyAndVisible];//is it correct to call it here?

LoginVC *loginObj = [[LoginVC alloc]init];

self.navigationController = [[UINavigationController alloc] initWithRootViewController:cellPhoneNumber];

self.tabBarController = [[UITabBarController alloc]init];

self.window.rootViewController = self.tabBarController;

[self.tabBarController presentViewController:self.navigationController animated:NO completion:^{}];

return YES;
}
Run Code Online (Sandbox Code Playgroud)

我正在呼叫[self.window makeKeyAndVisible];第二行uiwindow alloc init.这样做是否正确,或者我可能遇到像viewcontroller没有接收事件或方向通知的问题?

objective-c uiviewcontroller uiwindow ios appdelegate

5
推荐指数
2
解决办法
7647
查看次数