小编Mid*_* MP的帖子

为什么我可以将消息发送到NSArray的解除分配的实例?

我刚注意到一个令人惊讶的行为NSArray,这就是我发布这个问题的原因.

我刚刚添加了一个方法:

- (IBAction) crashOrNot
{
   NSArray *array = [[NSArray alloc] init];
   array = [[NSArray alloc] init];
   [array release];
   [array release];
}
Run Code Online (Sandbox Code Playgroud)

从理论上讲,这段代码会崩溃.但在我的情况下它永远不会崩溃!

我改变了NSArray,NSMutableArray但这次应用程序崩溃了.为什么会发生这种情况,为什么NSArray不崩溃和NSMutableArray崩溃?

memory-management nsmutablearray nsarray ios

2
推荐指数
1
解决办法
235
查看次数

应用程序未在设备中自动启动并在 xcode 上出现错误

我在 Xcode 4.5 上遇到一个奇怪的错误。当我尝试使用 iOS 6 从 xcode 在 Ipad 2 上运行我的应用程序时,出现此错误。

错误

我执行了以下方法来运行该应用程序,但没有成功。

  1. 清理项目并运行
  2. 重新启动设备
  3. 重新启动Xcode

我的计算机中有有效的证书,并且该应用程序正在设备上安装,但它没有自动启动。可能是什么问题 ?

提前致谢

device launch ios xcode4.5

2
推荐指数
1
解决办法
2192
查看次数

与宏扩张混淆

可能重复:
任何人都可以解释这些未定义的行为(i = i ++ + ++ i,i = i ++等...)
以下宏可能给应用程序带来哪些问题?

我编写了一个带有宏扩展的示例应用程序,用于在我的iOS(Objective C代码)中实现它.

它是这样的:

#define SQUARE(x) ( x * x )
main( )
{
   int i = 3, j, k ;
   j = SQUARE( i++ ) ;
   k = SQUARE( ++i ) ;
   printf ( "\nValue of i++ = %d\nValue of ++i = %d", j, k ) ;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

Value of i++ = 9
Value of ++i = 49
Run Code Online (Sandbox Code Playgroud)

预期产量为:

 Value of i++ = 9
 Value of ++i …
Run Code Online (Sandbox Code Playgroud)

c macros objective-c

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

typedef struct并声明一个结构变量

目前我正在开发一个iOS应用程序,我正在使用结构来存储一些数据.

我宣布了一个结构:

typedef struct Message
{
    int    messageType;
    char   *data;
    int    length;
} Message;
Run Code Online (Sandbox Code Playgroud)

但是当我需要声明一个变量时,我不小心写了:

struct Message *myMessage = NULL;
Run Code Online (Sandbox Code Playgroud)

这工作正常,没有问题.

我的问题是为什么这条线没有显示任何问题?

两者:

struct Message *myMessage = NULL;
Run Code Online (Sandbox Code Playgroud)

Message *myMessage = NULL;
Run Code Online (Sandbox Code Playgroud)

工作正常.这是正确的行为typedef吗?为什么我使用时不会显示任何错误struct Message

c objective-c ios

2
推荐指数
1
解决办法
1705
查看次数

从AppDelegate导航iOS Storyboard ViewControllers

我是iOS开发的新手.我有一个Facebook登录应用程序,它在appdelegate中调用委托方法.我使用.xib视图执行此操作,但我需要在故事板上执行此操作.我有一个LoginViewController,它有一个登录按钮,一旦用户点击它显示FB登录,用户登录后从那里调用appdelegate方法,我需要导航到MainViewController.我已经尝试了几种方法来做到这一点,但它不起作用.下面是我上次尝试过的代码.但它没有工作或甚至没有给出错误.请帮我 :(((

SCAppDelegate* appDelegate = (SCAppDelegate *)[[UIApplication sharedApplication] delegate];
LoginViewController *mvc = (LoginViewController *)appDelegate.window.rootViewController;
MainViewController *lvc2 = [mvc.storyboard instantiateViewControllerWithIdentifier:@"MainViewController"];
[_navController presentModalViewController:lvc2 animated:YES];
Run Code Online (Sandbox Code Playgroud)

iphone ios appdelegate

2
推荐指数
1
解决办法
3255
查看次数

Autolayout/masonry中心有多个视图

我使用Masonry在代码中创建自动布局约束.

这是我到目前为止:

最佳

使用以下代码:

- (void)viewDidLoad {
    [super viewDidLoad];

    [self.view setBackgroundColor:[UIColor whiteColor]];

    UIView *container = [[UIView alloc] init];
    [self.view addSubview:container];

    UIView *itemContainer = [[UIView alloc] init];
    [itemContainer setBackgroundColor:[UIColor colorWithWhite:0.9 alpha:1.0]];
    [container addSubview:itemContainer];

    UIImageView *itemImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Test"]];
    [itemContainer addSubview:itemImage];

    UILabel *itemTitle = [[UILabel alloc] init];
    [itemTitle setNumberOfLines:1];
    [itemTitle setText:@"Lorem ipsum dolor sit amet."];
    [itemTitle setFont:[UIFont boldSystemFontOfSize:12]];
    [itemTitle setTextColor:[UIColor blackColor]];
    [itemContainer addSubview:itemTitle];

    UILabel *itemText = [[UILabel alloc] init];
    [itemText setNumberOfLines:2];
    [itemText setText:@"Lorem ipsum dolor sit amet, consectetur adipiscing …
Run Code Online (Sandbox Code Playgroud)

ios autolayout masonry-ios-osx

2
推荐指数
1
解决办法
3318
查看次数

"Int"类型的不可变值只有名为adjust的变异成员

我现在正在学习Swift语言.

在Apple的文档中,我看到了一个扩展示例:

extension Int: ExampleProtocol {
    var simpleDescription: String {
        return "The number \(self)"
    }
    mutating func adjust() {
        self += 42
    }
}
7.simpleDescription
Run Code Online (Sandbox Code Playgroud)

所以我就是adjust()这样说的:

7.adjust()
Run Code Online (Sandbox Code Playgroud)

它抛出一个错误:

Immutable value of type `Int` only has mutating members named adjust.
Run Code Online (Sandbox Code Playgroud)

迅速错误

我不确定导致错误的原因是什么?任何人都可以帮我理解这个问题吗?

ios swift swift-extensions

2
推荐指数
1
解决办法
1774
查看次数

设置数组中所有对象的bool属性

我有一个名为的模型类PhotoItem.我有一个BOOL属性isSelected

@interface PhotoItem : NSObject

/*!
 * Indicates whether the photo is selected or not
 */
@property (nonatomic, assign) BOOL isSelected;

@end
Run Code Online (Sandbox Code Playgroud)

NSMutableArray拥有这个特定模型的对象.我想要做的是,在特定情况下,我想将数组中所有对象的bool值设置为true或false.我可以通过迭代数组并设置值来做到这一点.

而不是我尝试使用:

[_photoItemArray makeObjectsPerformSelector:@selector(setIsSelected:) withObject:[NSNumber numberWithBool:true]];
Run Code Online (Sandbox Code Playgroud)

但我知道它不起作用,但事实并非如此.此外,我不能传递真或假作为参数(因为那些不是对象类型).因此,为了解决这个问题,我实现了一个自定义公共方法,如:

/*!
 * Used for setting the photo selection status
 * @param selection : Indicates the selection status
 */
- (void)setItemSelection:(NSNumber *)selection
{
    _isSelected = [selection boolValue];
}
Run Code Online (Sandbox Code Playgroud)

并称之为:

[_photoItemArray makeObjectsPerformSelector:@selector(setItemSelection:) withObject:[NSNumber numberWithBool:true]];
Run Code Online (Sandbox Code Playgroud)

它工作得很好.但我的问题是,如果没有实现自定义公共方法,有没有更好的方法来实现这一目标?

boolean objective-c nsmutablearray ios

2
推荐指数
1
解决办法
1177
查看次数

Obj-C解析dd:hh:mm:ss的秒数

我正在计算两个日期之间的差异.我已经创建了自己的解决方案:

NSDate *actualDate = [NSDate date];
NSTimeInterval sec = [eveDate timeIntervalSinceDate:actualDate];
int secondsBetween = sec;
int minBetween     = sec / 60;
int hoursBetween   = sec / 3600;
int daysBetween    = sec / 86400;

_lblDays.text  = [NSString stringWithFormat:@"%d", daysBetween];
_lblHours.text = [NSString stringWithFormat:@"%d", hoursBetween % 24];
_lblMin.text   = [NSString stringWithFormat:@"%d", minBetween % hoursBetween];
_lblSec.text   = [NSString stringWithFormat:@"%d", secondsBetween % minBetween];
Run Code Online (Sandbox Code Playgroud)

但我相信有一个更好的解决方案(例如本机类)但我找不到任何东西.你能告诉我怎么做得更好吗?

date objective-c nsdate intervals ios

2
推荐指数
1
解决办法
79
查看次数

"由于缺少入口点,场景无法到达,并且没有......" - 解决这个警告

完整的警告是

由于缺少入口点而无法访问场景,并且没有运行时访问的标识符via-instantiateViewControllerWithIdentifier:.

我使用过Xcode-7.01,为什么会出现这个警告,解决方案是什么?

objective-c ios

2
推荐指数
1
解决办法
4174
查看次数