小编Chr*_*bax的帖子

C指向二维数组

我知道有几个问题可以提供良好(和工作)的解决方案,但没有恕我直言,这清楚地说明了实现这一目标的最佳方法.所以,假设我们有一些2D数组:

int tab1[100][280];
Run Code Online (Sandbox Code Playgroud)

我们想要制作一个指向这个2D数组的指针.为实现这一目标,我们可以做到:

int (*pointer)[280]; // pointer creation
pointer = tab1; //assignation
pointer[5][12] = 517; // use
int myint = pointer[5][12]; // use
Run Code Online (Sandbox Code Playgroud)

或者,或者:

int (*pointer)[100][280]; // pointer creation
pointer = &tab1; //assignation
(*pointer)[5][12] = 517; // use
int myint = (*pointer)[5][12]; // use 
Run Code Online (Sandbox Code Playgroud)

好的,两者似乎都运作良好.现在我想知道:

  • 什么是最好的方式,第一或第二?
  • 两者都等于编译器?(速度,性能......)
  • 这些解决方案中的一个比其他解决方案占用更多内存?
  • 开发人员更常使用的是什么?

c arrays pointers

27
推荐指数
3
解决办法
9万
查看次数

iPhone:NSTimer几乎没有内存泄漏问题

假设我有一个附有IBAction的按钮,按下时会触发多个动作,但是必须触发一个延迟一秒的特定动作,并且只有当用户在这个延迟一秒钟内没有按下按钮的新时间时.代码如下所示:

   @interface Image : UIView {
           NSTimer *timer;
   }
   ...other things...;
   @end

   @implementation Image
   -(IBAction)startStopTimer{
   ...do something...;
   ...do something...;

   [timer invalidate];
   timer = [[NSTimer scheduledTimerWithTimeInterval:0.7 
      target:self 
      selector:@selector(delayedAction) 
      userInfo:nil 
      repeats:NO] retain];
   }

   -(void)delayedAction{
   ...do other things...;
   }
   @end
Run Code Online (Sandbox Code Playgroud)

这样,这段代码工作得非常好:只有当用户不再按下按钮并等待至少一秒时,才会触发"delaiAvance".

最大的问题是:每次定时器被触发时,都会发生内存泄漏.

所以,问题是:我如何以及在何处发布此NSTimer?

(dealloc方法中的[timer release]不起作用.)

memory iphone memory-leaks nstimer

3
推荐指数
1
解决办法
1251
查看次数

标签 统计

arrays ×1

c ×1

iphone ×1

memory ×1

memory-leaks ×1

nstimer ×1

pointers ×1