小编jor*_*mol的帖子

setNeedsDisplay在块内不起作用

我正在CMMotionManager用于检索加速度计数据.问题是加速度计数据会定期打印,实例变量会在视图中更改,但视图不会重新绘制.我已经检查过这hv不是零,而且一切都被吸引住了.在块中调用setNeedsDisplay是否有问题?

-(void) viewDidAppear:(BOOL) animated
{
    [super viewDidAppear: animated];

    [motionManager startAccelerometerUpdatesToQueue:motionQueue withHandler:
     ^(CMAccelerometerData *accelerometerData, NSError *error)
    {

        NSLog(@"%@",accelerometerData);

        HypnosisView *hv = (HypnosisView *) [self view];

        hv.xShift = 10.0 * accelerometerData.acceleration.x;
        hv.yShift = -10.0 * accelerometerData.acceleration.y;

        [hv setNeedsDisplay];

    }];    
}
Run Code Online (Sandbox Code Playgroud)

ios objective-c-blocks setneedsdisplay

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

为什么在应用程序中自动释放窗口:didFinishLaunchingWithOptions:并在dealloc中释放?

我在xcode 4.2中使用没有ARC的空模板创建了一个iphone应用程序.我目前没有使用ARC,因为我想学习引用计数的基础知识.在应用程序委托中,我有以下方法:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
 }
Run Code Online (Sandbox Code Playgroud)

为什么要window自动释放?是因为AppDelegate将来不会使用它吗?但它被分配给实例变量.还有一个window释放的dealloc方法.它为什么在已经自动释放时发布?

- (void)dealloc
{
    [_window release];
    [super dealloc];
}
Run Code Online (Sandbox Code Playgroud)

iphone xcode autorelease ios xcode4.2

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