public member vs. property

There are occasions when access right and property clashes.

   BOOL m_isFolder;
@property (assign) BOOL m_isFolder

Although @property is not only for allowing easy setter/getter method to classes, it is probably one of the most popular purpose of @property.

However, if a member variable is an opaque type like BOOL, int, float. etc, then 두개의 궁금증이 생길 수있다.

“뭐하러 @private이나 @protected로 선언하고 @property를 선언해? 그냥 @public으로 넣고, 접근하지?”
여러분들은 이런 적이 있으신지? 그럴때 무슨 생각을 하시는지 궁금합니다.


6 responses to this post.

  1. 아직 public member를 써본적이 없어서 잘 모르겠어요.
    아마도 @property 의 기본 구현 중 하나가 atomic 인 것 같은데
    그때라면 Synthesize로 만들어지는 구현이 직접 접근과는 다른 방식으로 구현될 것 같아요.


    • Posted by jongampark on September 22, 2011 at 12:11 PM

      그럴때는 물론 다르게 구현되죠. 즉 critical section으로 보호되면서 구현되겠죠.
      (여기서 말하는 critical section은 @critical_section같은 특정 구현이 아니라, 그런 구현이나 혹은 lock으로 만들어지는 CS에서의 개념입니다.)


    • Posted by jongampark on September 22, 2011 at 12:33 PM

      참.. 혹시나 해서 여기 링크하는데요, atomicity가 thread safety를 보증하지는 않는다는거… 정보겸해서 답변에 링크합니다. 그럼 관련 있는거 찾기가 편하니까.. :)

      Objective-C의 atomicity는 transactional atomicity이기 때문에… thread safety를 구현하기 위한 중간 단계의 장치가 될 수는 있지만, 어떤 멤버 변수를 억세스하는 것을 atomic으로 한다고 바로 그 코드가 thread safe한 것은 아니죠.

      참 설명하기 곤란한 건데, 예를 적절하게 잘 생각해냈네요.


      • 아직 @property (atomic) 관련 해서 문서를 못봤는데
        accessor 로서 atomic을 이야기 하는 것이었군요…


  2. Do you realize that you wrote this blog post in half English and half Korean? As a result, I did not understand the end ;-)


    • Posted by jongampark on October 7, 2011 at 7:10 AM

      Ah… I’m sorry. I just wrote whatever came out from my brain first. :)
      When I talk to myself, this happens frequently….


Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: