- 특히 멀티스레드 사용시 유의해야 함.

- ( NSMutableArray*) abc

{

NSMutableArray* abc=[NSMutableArray array];

for( int i=0;i< BIGNUMBER;i++)

{

[abc addobject:[A objectAtIndex:i]];

}

return abc;

}


-(void) c

{

NSMutableArray* c=[NSMutableArray alloc] initWithArray:[self abc]];

// Doing with c....

}

==> abc 객체는 언제 autorelease될지 모르기 때문에 받은 후 메모리로 지정해준다.

*소켓통신을 통하여 서버에서 보내주는 자료 중 한글이 포함된 경우 처리 방법.


1. char[] 로 받는다.

2. memcpy()를 이용하여 unichar[]에 넣는다.

3. UTF8로 encoding 한다.


****sample source*****

char buf[bufferSize];   // 서버에서 직접 데이터를 받는 버퍼.


unichar uniBuf[bufferSize];

bzero(uniBuf, sizeof(uniBuf));  // 버퍼 초기화.

memcpy(uniBuf, buf, sizeof(buf));  // char[] > unichar[] 복사

NSString *temp = (NSString*)CFStringCreateWithCString(NULL, uniBuf, kCFStringEncodingUTF8);  // UTF8로 encoding

NSLog(@"========= value after encoding ========\r\n%@", temp);

bzero(uniBuf, sizeof(uniBuf));   // 다시한번 초기화.

'Tips & Tech > Objective-C' 카테고리의 다른 글

[iPhone]개발 및 디버깅 팁 10 가지  (0) 2012.02.27
[iPhone]메모리 관리  (0) 2012.02.27
[Tips]Custom Controls Open Source Site.  (0) 2012.02.27
[iPhone]Wi-Fi로 연결된 ip 구하기.  (0) 2012.02.27
[iPhone]한글 처리.  (0) 2012.02.27
http://www.cocoacontrols.com/

Custom UI에 관심이 있어서 찾다가 발견한 곳입니다.
iOS 와 Mac OS X용 Custom UI Controls를 보기 좋게 정리해 놓은 사이트 입니다.

도움이 되셨으면 좋겠습니다.

*자료출처 : 맥부기카페(http://cafe.naver.com/mcbugi/143043)

'Tips & Tech > Objective-C' 카테고리의 다른 글

[iPhone]개발 및 디버깅 팁 10 가지  (0) 2012.02.27
[iPhone]메모리 관리  (0) 2012.02.27
[TCP]한글깨짐현상.  (0) 2012.02.27
[iPhone]Wi-Fi로 연결된 ip 구하기.  (0) 2012.02.27
[iPhone]한글 처리.  (0) 2012.02.27
#include <ifaddrs.h>

#include <arpa/inet.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <net/if.h>

#include <net/if_dl.h>



#if ! defined(IFT_ETHER)

#define IFT_ETHER 0x6/* Ethernet CSMACD */

#endif


+ (NSString *)localIPAddress

{

BOOL success;

struct ifaddrs * addrs NULL;

const struct ifaddrs * cursor;

NSString *address @"";

success = (getifaddrs(&addrs) == 0);

if (success) 

{

cursor = addrs;

while (cursor != NULL) {

if (cursor->ifa_addr->sa_family == AF_INET && (cursor->ifa_flags & IFF_LOOPBACK) == 0// this second test keeps from picking up the loopback address

{

NSString *name = [NSString stringWithUTF8String:cursor->ifa_name];

if ([name isEqualToString:@"en0"]) 

// found the WiFi adapter

address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)cursor->ifa_addr)->sin_addr)];

break;

}

}

cursor = cursor->ifa_next;

}

freeifaddrs(addrs);

}

return address;

}


샘플소스에서 확인한 결과 이상없이 동작합니다.


*자료출처 : http://peepleware.com/home/12081

'Tips & Tech > Objective-C' 카테고리의 다른 글

[iPhone]개발 및 디버깅 팁 10 가지  (0) 2012.02.27
[iPhone]메모리 관리  (0) 2012.02.27
[TCP]한글깨짐현상.  (0) 2012.02.27
[Tips]Custom Controls Open Source Site.  (0) 2012.02.27
[iPhone]한글 처리.  (0) 2012.02.27

# Socket 통신


Windows 프로그램과 소켓통신을 할 때, 윈PC에서 보내준 한글이 제대로 인식되지 않을때가 발생되어

다음과 같이 해결.


Byte buf[bufferSize];

int nReceivedData = read(clientSd, buf, sizeof(buf));

NSData *bufData = [NSData dataWithByte:buf];

NSString *strData = [[NSString alloc] initWithData:bufData encodign:NSUTF8Encoding];


NSLog(@"strData value : %@", strData);     // 한글 잘 나옴.


[strData release];


# QuotedPrintable decode 시 한글 문제.



//-----------------------------------------------

//-----------------  C style  -------------------

//-----------------------------------------------


static int hex2int( char x )

{

    return (x >= '0' && x <= '9') ? x - '0' :

    (x >= 'A' && x <= 'F') ? x - 'A' + 10 :

    (x >= 'a' && x <= 'f') ? x - 'a' + 10 :

    0;

}


- (char *)qp_decode:(const char *)qp

{

    const char *in;

    char *ret = new char[strlen(qp)+1];

    char *out = ret;

    

    for (in = qp; *inin++ ) {

        // Handle encoded chars

        if ( *in == '=' ) {

            if (in[1] && in[2] ) {

                // The sequence is complete, check it

                in++;   // skip the '='

                if (in[0] == '\r' && in[1] == '\n') {

                    // soft line break, ignore it

                    in ++;

                    continue;

                }

                else if ( isxdigit(in[0]) && isxdigit(in[1]) ) {

                    // Ok, we have two hex digit: decode them

                    *out = (hex2int(in[0]) << 4) | hex2int(in[1]);

                    out++;

                    in ++;

                    continue;

                }

            }

            // In all wrong cases leave the original bytes

            // (see RFC 2045). They can be incomplete sequence,

            // or a '=' followed by non hex digit.

        }

        // TODO:

        // RFC 2045 says to exclude control characters mistakenly

        // present (unencoded) in the encoded stream.

        

        // Copy other characters

        *out = *in;

        out++;

    }

    *out = 0;

    

    return ret;

}

//-------------------------------------------------------------


NSString *temp = (NSString*)CFStringCreateWithCString(NULL, [qt qp_decode:[[TBXML textForElement:serverDetail] UTF8String]], kCFStringEncodingUTF8);

'Tips & Tech > Objective-C' 카테고리의 다른 글

[iPhone]개발 및 디버깅 팁 10 가지  (0) 2012.02.27
[iPhone]메모리 관리  (0) 2012.02.27
[TCP]한글깨짐현상.  (0) 2012.02.27
[Tips]Custom Controls Open Source Site.  (0) 2012.02.27
[iPhone]Wi-Fi로 연결된 ip 구하기.  (0) 2012.02.27

+ Recent posts